是CoroutineScope的扩展函数,并继承了它的coutineContext来自动传播其上下文元素和可取消性。挂起函数需要相互传递 Continuation,每个挂起函数都要由另一个挂起函数调用,这一切都是从协程构建器开始的。
- lunch():无需产生值。返回一个 Job实例 用来管理协程的生命周期。异常???
- async():需要产生值。返回一个 Deferred实例 通过 await() 拿到执行的结果(包括异常)。异常???
参数 context:指定协程上下文。默认为空的上下文。 参数 start:指定协程启动模式。默认为可以立刻被调度的状态。 参数 block:协程执行体,即要做的任务。 | |
lunch() | public fun CoroutineScope.launch( 返回对该协程任务的引用,即 Job 接口的匿名实现。 |
async() | public fun 返回协程的执行结果,通过 await() 可以拿到协程的执行结果。 |
区别
协程构建器 launch、async... | 协程作用域函数 coroutineScope()、supervisorScope()、withContext()... |
CoroutineScope的扩展函数 | 挂起函数 |
携带来自CoroutineScope的协程上下文 | 携带contineation的协程上下文 |
异常通过Job传递给父协程 | 异常像普通函数那样抛出 |
构建器彼此之间是并发的 | 挂起函数彼此之间是阻塞的 |