有一种执行网络调用的方法.有时我想等待调用的结果,有时我不想.为了实现这一行为,我使用launch
方法并返回Job.因此,我可以根据自己的需要, Select 做不做这份工作.问题是,有时我可以确定不需要网络调用(请求不包含数据).
那么,我如何创建一个已完成且不会干扰协程调度程序的空作业(job)?朴素的Job()
看起来已经足够好了,但我可能错过了Kotlin协程的一些重要的内部 struct .
有一种执行网络调用的方法.有时我想等待调用的结果,有时我不想.为了实现这一行为,我使用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() }