[英]Kotlin composition of coroutine context inside constructor of coroutine scope
这段代码到底在做什么?
private val supervisorJob = SupervisorJob()
protected val presenterScope = CoroutineScope(Dispatchers.Main + supervisorJob)
Dispatchers.Main + supervisorJob
的结果是什么? 我知道它一定是某种组合,但它是如何工作的? 以及如何称呼? 谢谢
这是很多问题。
这段代码到底在做什么?
你可以这样看:这段代码创建了一个新的CoroutineScope
,调度器设置为Main
,行为设置为SupervisorJob
Dispatchers.Main
意味着协程将在主线程上执行。 通常这指的是 Android UI 线程。
SupervisorJob
意味着与常规的Job
行为不同,当其中一个孩子失败时,父母也会失败,所有其他孩子也会失败,工作将照常继续。
Dispatchers.Main + supervisorJob 的结果是什么?
结果是CoroutineContext
。 您可以将其视为不同键值的哈希映射。
我知道它一定是某种组合,但它是如何工作的?
你是对的。 如果您查看CoroutineContext
实现,您会发现它实现了operator fun plus
,它允许使用+
组合CoroutineContext
类型的两个对象
以及如何称呼?
通常协程方法是CoroutineScope
上的扩展方法。 如果我们看一下async()
,例如:
public fun <T> CoroutineScope.async(
context: CoroutineContext = EmptyCoroutineContext,
start: CoroutineStart = CoroutineStart.DEFAULT,
block: suspend CoroutineScope.() -> T
): Deferred<T>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.