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