Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在协程作用域的构造函数内,协程上下文的Kotlin组合_Kotlin_Kotlin Coroutines - Fatal编程技术网

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

在协程作用域的构造函数内,协程上下文的Kotlin组合,kotlin,kotlin-coroutines,Kotlin,Kotlin Coroutines,这段代码到底在做什么 private val supervisorJob = SupervisorJob() protected val presenterScope = CoroutineScope(Dispatchers.Main + supervisorJob) Dispatchers.Main+supervisorJob的结果是什么?我知道这一定是某种构图,但它是如何工作的?它叫什么名字? 谢谢有很多问题 这段代码到底在做什么 private val supervisorJob = S

这段代码到底在做什么

private val supervisorJob = SupervisorJob()
protected val presenterScope = CoroutineScope(Dispatchers.Main + supervisorJob)
Dispatchers.Main+supervisorJob
的结果是什么?我知道这一定是某种构图,但它是如何工作的?它叫什么名字?
谢谢

有很多问题

这段代码到底在做什么

private val supervisorJob = SupervisorJob()
protected val presenterScope = CoroutineScope(Dispatchers.Main + supervisorJob)
您可以这样看:此代码创建一个新的
CoroutineScope
,dispatcher设置为
Main
,Behavior设置为
SupervisorJob

Dispatchers.Main
表示协同程序将在主线程上执行。通常这是指Android UI线程

SupervisorJob
意味着,与常规的
Job
行为不同,当其中一个孩子的失败也会让家长失败,而所有其他孩子也会失败时,该工作将照常继续

调度员的结果是什么。主要+主管工作

结果是
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>
public fun CoroutineScope.async(
上下文:CoroutineContext=EmptyCoroutineContext,
开始:CoroutineStart=CoroutineStart.DEFAULT,
块:挂起协同作用域。(->T
):延期

这是很多问题

这段代码到底在做什么

private val supervisorJob = SupervisorJob()
protected val presenterScope = CoroutineScope(Dispatchers.Main + supervisorJob)
您可以这样看:此代码创建一个新的
CoroutineScope
,dispatcher设置为
Main
,Behavior设置为
SupervisorJob

Dispatchers.Main
表示协同程序将在主线程上执行。通常这是指Android UI线程

SupervisorJob
意味着,与常规的
Job
行为不同,当其中一个孩子的失败也会让家长失败,而所有其他孩子也会失败时,该工作将照常继续

调度员的结果是什么。主要+主管工作

结果是
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>
public fun CoroutineScope.async(
上下文:CoroutineContext=EmptyCoroutineContext,
开始:CoroutineStart=CoroutineStart.DEFAULT,
块:挂起协同作用域。(->T
):延期