这段代码到底在做什么?

private val supervisorJob = SupervisorJob()
protected val presenterScope = CoroutineScope(Dispatchers.Main + supervisorJob)
Dispatchers.Main + supervisorJob的结果是什么?我了解它一定是某种组合,但是它如何工作?怎么称呼它?
谢谢

最佳答案

有很多问题。



您可以如下所示:此代码创建一个新的CoroutineScope,将调度程序设置为Main,将行为设置为SupervisorJobDispatchers.Main表示协程将在主线程上执行。通常,这是指Android UI线程。
SupervisorJob意味着,与常规Job行为不同,当一个 child 的失败也会使 parent 失败,而所有其他 child 也会失败,这项工作将照常进行。



结果是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>

07-27 23:04