rokevin
移动
前端
语言
  • 基础

    • Linux
    • 实施
    • 版本构建
  • 应用

    • WEB服务器
    • 数据库
  • 资讯

    • 工具
    • 部署
开放平台
产品设计
  • 人工智能
  • 云计算
计算机
其它
GitHub
移动
前端
语言
  • 基础

    • Linux
    • 实施
    • 版本构建
  • 应用

    • WEB服务器
    • 数据库
  • 资讯

    • 工具
    • 部署
开放平台
产品设计
  • 人工智能
  • 云计算
计算机
其它
GitHub
  • Suspend Function(挂起函数)

  • 5. 挂起函数(Suspend Function)
    • 核心定义
    • 关键特征
    • 使用场景
    • 示例
    • 注意事项

Suspend Function(挂起函数)

5. 挂起函数(Suspend Function)

核心定义

用suspend关键字修饰的函数,可在协程中暂停执行(不阻塞线程),等待结果后恢复执行,是 Kotlin 协程的核心。

关键特征

  • 只能在协程或其他挂起函数中调用;
  • 编译期会被转换为带有续体(Continuation)的普通函数;
  • 支持delay()、await()等挂起操作,替代阻塞式的Thread.sleep()。

使用场景

  • 异步操作(网络请求、数据库操作、文件读写);
  • 协程中的耗时操作(非阻塞式等待);
  • 与 Flow、StateFlow 等协程数据流配合使用。

示例

import kotlinx.coroutines.delay
import kotlinx.coroutines.runBlocking

// 挂起函数:模拟网络请求
suspend fun fetchData(): String {
    delay(1000) // 非阻塞式延迟(替代Thread.sleep)
    return "模拟网络请求返回的数据"
}

// 挂起函数调用另一个挂起函数
suspend fun processData(): String {
    val data = fetchData()
    return "处理后的数据:$data"
}

// 使用(必须在协程中调用)
fun main() = runBlocking {
    val result = processData()
    println(result) // 处理后的数据:模拟网络请求返回的数据
}

注意事项

  • 挂起函数不会自动创建协程,需在launch/async/runBlocking等协程作用域中调用;
  • 挂起函数的异常可通过try-catch捕获,或通过CoroutineExceptionHandler处理。
最近更新:: 2026/3/22 16:04
Contributors: luokaiwen