二、并发
在了解async/await
的基本用法后,我们再来聊一下使用async/await
做并发,还是通过小例子来看!
1. 案例一
coroutineScope.launch(Dispatchers.IO) {
val a1 = async{ getUserInfo() }
val userInfo = a1.await()
val a2 = async{ getMessage(userInfo.token) }
val msgList = a2.await()
}
在案例一中,getUserInfo()
会先执行,getMessage()
在getUserInfo()
执行完毕后再执行,是顺序执行。
2. 案例二
coroutineScope.launch(Dispatchers.IO) {
val a1 = async{ getUserInfo() }
val a2 = async{ getHomeInfo() }
val userInfo = a1.await()
val homeInfo = a2.await()
}
在案例二中,getUserInfo()
与getHomeInfo()
是并发执行的。这里可能有同学会疑惑,为什么不是a1.await()
执行完毕后再执行a2.await()
,这样和案例一不就矛盾了吗?其实await()
函数有个特性&#