簡體   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