簡體   English   中英

RxJava - Observable的zip列表if throw異常如何獲得成功響應

[英]RxJava - zip list of Observable if throw exception how to get success response

我試圖在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)

}    

有一個名為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 )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM