FastJetpack icon indicating copy to clipboard operation
FastJetpack copied to clipboard

flow写法同时请求多个接口怎么处理呢

Open sceneren opened this issue 4 years ago • 1 comments

sceneren avatar Dec 14 '21 02:12 sceneren

这个需要根据实际业务进行处理,比如说zip三个请求,如果其中一个业务code不正确,是忽略其中一个还是整体不成立,由业务觉决定。

fun request() = flow { emit(apiService.request()) }
fun request2() = flow { emit(apiService.request2()) }
fun request3() = flow { emit(apiService.request3()) }

 viewModelScope.launch {
     request()
         .zip(request()2){ r1,r2->{
                   val list= mutableListOf<String>()           // 如果request() 返回code不成功 整体抛异常
                    if(r1.code ==0){
                      list.addAll(r1.data)
                 }else{
                  throw nullExcpt
               }
                 if(r2.code==0){                                     // 如果request2()返回code不成功,则忽略
                  list.addAll(r2.data)
        }

                    return@zip list
       }
         .zip(request()3){ r12,r3->
        }
       .catch{ 
       }
       .collect {
                    }
   }

}


ruirui1128 avatar Sep 25 '22 07:09 ruirui1128