mergeWith
以 parentContext 作为基准、以当前 receiver
为主要结果合并两个 CoroutineContext, (也就是使用当前 context 覆盖 parentContext)
例如:
CoroutineName("name1").mergeWith(CoroutineName("name2"))
// 结果:CoroutineName("name1")
Content copied to clipboard
在这过程中同样“合并”二者的 Job:
如果都没有 Job,则创建一个 SupervisorJob 添加
如果 parentContext 中有 Job,则将其作为创建的 SupervisorJob 的 parent。
如果当前
receiver
有 Job,则将其作为创建的 SupervisorJob 的 parent。如果二者都有 Job,则将当前
receiver
作为 parent,并通过 linkTo 链接到 parentContext 中的 Job 上。