有一种执行网络调用的方法.有时我想等待调用的结果,有时我不想.为了实现这一行为,我使用launch方法并返回Job.因此,我可以根据自己的需要, Select 做不做这份工作.问题是,有时我可以确定不需要网络调用(请求不包含数据).

那么,我如何创建一个已完成且不会干扰协程调度程序的空作业(job)?朴素的Job()看起来已经足够好了,但我可能错过了Kotlin协程的一些重要的内部 struct .

推荐答案

我们只需使用Job()创建一个作业(job)并在返回之前完成它:

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

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

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

Kotlin相关问答推荐

使用另一个对象的列表创建对象

KTOR';S函数`staticResources`在Kotlin本机目标上不可用

如何在数据类中删除空格 (String)?

为什么这两个 Kotlin 协程函数不一样?

MyType.()在 Kotlin 中是什么意思?

Kotlin:我可以将函数分配给 main 的伴随对象中的变量吗?

如何处理基于枚举提前返回的 forEach 循环,Kotlin 中的一条路径除外

在 Kotlin 中,我可以在集合上有一个条件构建器元素吗?

KMM:编译失败:意外的 IrType 类型:KIND_NOT_SET

从列表中的每个对象中 Select 属性

Kotlin 枚举中的循环引用

Kotlin - 覆盖方法中的 IllegalArgumentException

如何设置两列recyclerview?

主机名不能为空

Kotlin如何分派invoke操作符?

在Kotlin中使用@Service时引发异常

Android Jetpack导航,另一个主机片段中的主机片段

Kotlin 与 C# 中的标志枚举变量具有相似效果的方式是什么

我应该使用Kotlin数据类作为JPA实体吗?

使用 java lambda 调用 kotlin 函数时,Kotlin 无法访问 kotlin.jvm.functions.Function1