我想在我的 android 应用程序中使用 RxJava 实现一个逻辑,这需要三个并行的 api 调用。只有第三个 api 调用有重试逻辑。如果在尝试了 3 次后都成功了,那么将会对第四个 api 进行后续调用,否则只会将第一次和第二次 api 调用的结果传递给订阅者。
我尝试使用 Zip 运算符来实现这一点,但后来被第三个 api 调用的重试逻辑卡住了。
Observable<String> observable1 = Observable.just("A","B");
Observable<Integer> observable2 = Observable.just(1,2);
Observable<Boolean> observable3 = Observable.just(Boolean.TRUE, Boolean.FALSE);
Observable.zip(observable1, observable2, observable3, new Function3() { @Override public Object apply(String s, Integer integer, Boolean aBoolean) throws Exception { if (aBoolean==null){ alphabets3.retry(3).doOnComplete( new Action() { @Override public void run() throws Exception { // 结果永远不会被使用 } }); }
return s+integer+aBoolean;
}
}).subscribe(new Observer<Object>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(Object o) {
Log.e("onNext-->", o.toString());
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});