如何创建空的Kotlin作业?

rfbsl7qr  于 2023-10-23  发布在  Kotlin
关注(0)|答案(1)|浏览(133)

有一种方法可以执行网络调用。有时候我想等待电话的结果,有时候我不想。为了实现该行为,我使用launch方法并返回Job。所以我可以根据我的需要,选择join或不选择该工作。问题是,有时我可以确定不需要网络调用(请求不包含数据)。
那么,我如何创建一个空的Job,它已经完成,并且不会干扰协程调度器?朴素的Job()看起来足够好了,但可能我错过了关于Kotlin协程内部的一些重要内容。

bnl4lu3b

bnl4lu3b1#

我们可以简单地使用Job()创建一个作业,并在返回之前完成它:

fun doNetwork(): Job {
    val job = Job()
    job.complete()
    return job
}

我们也可以用更简洁的方式来写:

fun doNetwork(): Job = Job().also { it.complete() }

相关问题