如何立即从范围内取消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协程(返回)?]的主要内容,如果未能解决你的问题,请参考以下文章