我是RxJava/RxAndroid的新手。我想使用RxJava/RxAndroid來實現以下情況:首先,從網絡獲取數據,然後對數據進行一些檢查,如果任何檢查失敗,只顯示Main Thread中的錯誤。如何實現Rxjava/RxAndroid的檢查鏈
我嘗試一些RxJava操作,但無法找到一個很好的方式這樣做。 有人可以幫我嗎?非常感謝!
我寫了一些關於這種情況的測試代碼(使用String作爲數據),還有更簡單的方法嗎?
Observable.just(s)
.flatMap(new Function<String, ObservableSource<String>>() {
@Override
public ObservableSource<String> apply(final String s) throws Exception {
return Observable.create(new ObservableOnSubscribe<String>() {
@Override
public void subscribe(ObservableEmitter<String> e) throws Exception {
if(s.length() < 3){
e.onError(new Throwable("len"));
}else{
e.onNext(s);
e.onComplete();
}
}
});
}
}).flatMap(new Function<String, ObservableSource<String>>() {
@Override
public ObservableSource<String> apply(final String s) throws Exception {
return Observable.create(new ObservableOnSubscribe<String>() {
@Override
public void subscribe(ObservableEmitter<String> e) throws Exception {
if(s.startsWith("a")){
e.onError(new Throwable("start"));
}else{
e.onNext(s);
e.onComplete();
}
}
});
}
}).subscribeOn(AndroidSchedulers.mainThread())
.doOnError(new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
System.out.println("get error: " + throwable.getMessage());
}
}).subscribe(new Consumer<String>() {
@Override
public void accept(String s) throws Exception {
System.out.println(s);
}
});
flatMap是你要找的東西。 –
感謝您的回覆! –