协程进阶:组合 04. 异步函数风格

本篇解析 example-compose-04.kt。探讨一种看似“方便”但在协程中不被推荐的编程风格。

1. 核心现象:全局作用域异步

有些开发者喜欢通过 GlobalScope.async 封装一个普通函数,使其变为异步返回 Deferred 的函数。

缺点:

  • 不具有结构化:如果在调用这些函数和 await() 之间发生了异常,后台协程可能依然在运行,造成资源浪费或逻辑冲突。
  • 风险高:这种模式绕过了父子作用域的级联关系,让异常处理变得非常棘手。

2. 开发者感悟

这种风格虽然模仿了 JavaScript 或 C# 的异步模式,但在 Kotlin 协程中被视为“反模式”。在 Android 开发中,应优先使用 suspend 函数或 coroutineScope,而不是直接在普通函数里启动全局异步任务。

,