您当前的位置: 首页 > 

蓝不蓝编程

暂无认证

  • 0浏览

    0关注

    706博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

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

蓝不蓝编程 发布时间:2020-10-30 14:53:16 ,浏览量: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() }
    //等所有接口调用完毕后执行如下操作
}
关注
打赏
1639405877
查看更多评论
立即登录/注册

微信扫码登录

0.0721s