簡體   English   中英

如果RxJava中的結果無效,如何發送onError

[英]How to send onError if result is invalid in RxJava

我已經實現了這樣的POJO。

public class WebResponse<T> {

    private String Response;
    private String Message;
    private T Result;
}

例如,如果Response成功,我將在Result收到一組國家。

為了僅在Country上執行合成操作,我flatMap了WebResponse並應用了相關的運算符。 像這樣:

    Observable<WebResponse<ArrayList<Country>>> countryListAsObservable = api.getCountryListAsObservable();
    countryListAsObservable
            .subscribeOn(AndroidSchedulers.mainThread())
            .flatMap(
                    new Func1<WebResponse<ArrayList<Country>>, Observable<?>>() {
                        @Override
                        public Observable<Country> call(WebResponse<ArrayList<Country>> arrayListWebResponse) {

                            return Observable.from(arrayListWebResponse.getResult());
                        }
                    })
            .map(new Func1<Country, String>() {
                @Override
                public String call(Country country) {
                    return country.getName();
                }
            })
            .subscribe(
                    new Action1<String>() {
                        @Override
                        public void call(String o) {
                            Log.i("Country name", o);
                        }
                    });

現在,服務器本身就有可能發送失敗消息,這將是Response 發生這種情況時,我想觸發SubscriberonError()

我如何才能做到不打斷鏈條呢?

您是否嘗試過類似下面的代碼?

countryListAsObservable.flatMap(new Func1<WebResponse<ArrayList<Country>>, Observable<?>>() {
    @Override
    public Observable<Country> call(final WebResponse<ArrayList<Country>> response) {
        if (!isValidResponse(response)) {
            return Observable.error(new Exception("Response is invalid"));
        } else {
            return Observable.from(response.getResult());
        }
    }

    public boolean isValidResponse(final WebResponse<ArrayList<Country>> response) {
        return response != null && response.getResult() != null;
    }
});

想法是稍微修改flatMap函數,如果響應無效,則返回Observable.error

我在onError(null)方法中發送null之前遇到了同樣的問題。 所以我去扔了RXJava庫。 在RXJava內部,如果我們在onError方法中發送null,則它們具有null檢查並調用onComplete方法。

例如:-所以最好不要發送null。發送NullPointerException(“ volley返回null”)

暫無
暫無

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

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