在 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/