繁体   English   中英

协程作用域构造函数内协程上下文的 Kotlin 组合

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM