安卓开发

协程Coroutines实现并发和串行两种操作

2020-10-30  本文已影响0人  蓝不蓝编程

背景

一般情况,我们使用协程,是将异步变成同步,操作就都变成了串行的了,但是有些界面需要调用调用多个接口,而且还需要等所有接口完成后再做某个动作.那该怎么办呢?
下面的样例为串行调用:

launch {
    val resp1 = service.query1()
    resp1?.let { view.xx1() }
    val resp2 = service.query2()
    resp2?.let { view.xx2()  }
    //等所有接口调用完毕后执行如下操作
}

解决方案

按照如下代码,对于接口调用加上async关键字,这样所有的接口调用直到await才会阻塞,这样就达到了接口并发调用,但是等所有接口调用完成后再执行特定动作.

launch {
    val resp1 = async { service.query1() }
    val resp2 = async { service.query2()}
    resp1.await()?.let {  view.xx1()  }
    resp2.await()?.let {  view.xx2() }
    //等所有接口调用完毕后执行如下操作
}
上一篇 下一篇

猜你喜欢

热点阅读