Kotlin 将一个作业添加为另一个作业的子项的正确方法是协同路由?
假设我们有Kotlin 将一个作业添加为另一个作业的子项的正确方法是协同路由?,kotlin,coroutine,kotlinx.coroutines,kotlin-coroutines,Kotlin,Coroutine,Kotlinx.coroutines,Kotlin Coroutines,假设我们有job1:Job和job2:Job,我们希望将job2作为job1的子项(它们单独创建时没有关系) 声明这种关系的正确方法是什么?这样当job1被取消时job2也被取消 我尝试了job1.attachChild(e1.job2作为ChildJob),但这是内部api。 当我从job1协同程序启动job2时,我不想做一些黑客操作。只需从job1的范围内启动job2即可。Job2将继承作用域,因此如果job1被取消,那么Job2也将被取消 您可以使用作业(父项:作业?工厂函数,该函数接收父
job1:Job
和job2:Job
,我们希望将job2
作为job1
的子项(它们单独创建时没有关系)
声明这种关系的正确方法是什么?这样当job1
被取消时job2
也被取消
我尝试了job1.attachChild(e1.job2作为ChildJob)
,但这是内部api。
当我从job1协同程序启动job2时,我不想做一些黑客操作。只需从job1的范围内启动job2即可。Job2将继承作用域,因此如果job1被取消,那么Job2也将被取消 您可以使用
作业(父项:作业?
工厂函数,该函数接收父项作业作为参数。其定义如下:
public fun Job(parent: Job? = null): Job
fun SupervisorJob(parent: Job? = null): Job
这意味着参数父项是可选的。
因此,您可以创建如下工作:
var parentJob: Job = Job()
var childJob: Job = Job(parentJob)
还可以查看,它可用于自定义的默认行为<代码>主管职务工厂职能具有类似的定义:
public fun Job(parent: Job? = null): Job
fun SupervisorJob(parent: Job? = null): Job
这太糟糕了,这让我做了一些奇怪的事情来确保一个简单的亲子关系。。。应该有更好的办法。是的,我在提问后很快就发现了这一点,但仍然很糟糕,没有办法把两份工作联系起来。