如何立即从范围内取消Kotlin协程(返回)?]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何立即从范围内取消Kotlin协程(返回)?]相关的知识,希望对你有一定的参考价值。

在下面的代码中,当捕获到异常时,我想停止执行该范围。

GlobalScope.launch() {
   try {
       someFunctionThatThrows()
   } catch (exception: Exception) {
       // log
       cancel() // this is not stopping the coroutine and moreWork() is still executed
   }
   moreWork()
}

cancel()不会立即取消协程,而是将标志isActive设置为false,这需要后续检查。

假设下面的代码,我想在捕获到异常时停止执行该范围。 GlobalScope.launch(){试试{someFunctionThatThrows()} catch(exception:Exception){...

答案

根据您启动的范围,有特殊的语法return@launchreturn@async

以上是关于如何立即从范围内取消Kotlin协程(返回)?]的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin:协程范围与协程上下文

如何从 Kotlin 协程返回值

Kotlin Multiplatform Mobile:Ktor - 如何在 Kotlin Native(iOS)中取消活动协程(网络请求、后台工作)?

Kotlin 协程协程启动 ⑥ ( 协程生命周期状态 | 新创建 New | 活跃 Active | 完成中 Completing | 已完成 Completed | 取消中 | 已取消 )

Kotlin 协程协程启动 ⑥ ( 协程生命周期状态 | 新创建 New | 活跃 Active | 完成中 Completing | 已完成 Completed | 取消中 | 已取消 )

如何在 Android 的生命周期感知协程范围内返回函数值?