asynchronous - Kotlin协程中的launch/join和async/await有什

kotlinx.coroutines 库中,您可以使用 launch(使用 join)或 async 启动新的协程>(使用 await)。它们之间有什么区别?

最佳答案

  • launch用于触发并忘记协程。这就像开始一个新线程。如果 launch 中的代码以异常终止,那么它会被视为线程中的 uncaught 异常——通常在后端 JVM 应用程序中打印到 stderr 并导致 Android 应用程序崩溃。 join用于等待启动的协程完成,并且不会传播其异常。然而,一个崩溃的 child 协程也会取消它的父协程,并产生相应的异常。

  • async用于启动一个计算某些结果的协程。结果由 Deferred 的实例表示你必须使用await在上面。 async 代码中未捕获的异常存储在生成的 Deferred 中,并且不会传递到其他任何地方,除非处理,否则它将被静默丢弃。 您一定不要忘记您使用异步启动的协程

关于asynchronous - Kotlin协程中的launch/join和async/await有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46226518/

相关文章:

generics - 如何在 Kotlin 中将 TypeToken + 泛型与 Gson 一起使用

kotlin - Kotlin 中等效的 Swift 'if let' 语句

kotlin - Kotlin 中的单个感叹号

android-studio - Android Studio 3.0 - 找不到方法 'com.a

generics - Kotlin 中的 reified 关键字是如何工作的?

kotlin - Kotlin中折叠和减少之间的区别,何时使用?

kotlin - Kotlin 中的多变量 let

android-studio - Unresolved reference : kotlinx

syntax - Kotlin 二级构造函数

kotlin - bool 值的使用?在 if 表达式中