大家好,我是小益!在上章内容中,我们简单了解了什么是协程以及协程的基本使用,主要提到了协程的launch
与withContext
用法。但是launch
与withContext
并不适合用于需要返回结果的并发场景,在并发场景中,我们一般会使用协程的async/await
。
推荐
文章将率先在公众号「Code满满」与个人博客「李益的小站」上发布,如果觉得本文对你有帮助,就快来关注一下公众号吧! 文章将率先在公众号「Code满满」与个人博客「李益的小站」上发布,如果本文对你有帮助,就关注一下公众号吧!
一、async与awiat
async
单单从字面意思理解就知道其与异步有关。async
也是CoroutineScope
的扩展函数,其源码如下:
public fun CoroutineScope.async(
context: CoroutineContext = EmptyCoroutineContext,
start: CoroutineStart = CoroutineStart.DEFAULT,
block: suspend CoroutineScope.() -> T
): Deferred {
val newContext = newCoroutineContext(context)
val coroutine = if (start.isLazy)
LazyDeferredCoroutine(newContext, block) else
DeferredCoroutine(newContext, active = true)
coroutine.start(start, coroutine, block)