我正在尝试在Android中使用rxjava2并行调用多个API。它是按要求工作的,但如果有任何api抛出异常,它不能给出其他API的响应,那么有没有办法调用其他返回成功响应的API。
private fun getStoreCouponData() {
val userObservable = repo2
.create<StoreCouponsApi>(StoreCouponsApi::class.java!!)
.getCoupons
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
val eventsObservable = repo2
.create<StoreCouponsApi>(StoreCouponsApi::class.java!!)
.storeInfo
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
val combined = Observable.zip<StoreCoupons, StoreCoupons, StoreList>(userObservable, eventsObservable,
BiFunction<StoreCoupons, StoreCoupons, StoreList> { response1, response2 -> StoreList(response1, response2) })
combined.subscribe(object : DefaultObserver<StoreList>() {
override fun onNext(s: StoreList) {
for (item in s.store!!.coupons!!) {
System.out.println(item.store)
}
}
override fun onError(e: Throwable) {
System.out.println(e)
}
override fun onComplete() {
}
})
println(combined)
}
发布于 2019-05-30 13:17:56
有一个名为onErrorResumeNext
的回调函数,当一个请求出错时,它可以用来继续这个过程。
val combined = Observable.zip<StoreCoupons, StoreCoupons, StoreList>(userObservable, eventsObservable,
BiFunction<StoreCoupons, StoreCoupons, StoreList> { response1, response2 -> StoreList(response1, response2) }).onErrorResumeNext(
// you can error separately on each requests, and you can call other requests )
https://stackoverflow.com/questions/56371745
复制相似问题