2つの観測値があります。 1)注文を同期する(完了可能)2)すべての注文を取得する。 バックエンドから希望の製品を入手するまで、製品の同期を維持したいと考えています。これは5分ごとに5回ポーリングして注文確認を取得します。完了可能な観測で再試行
apiService
.syncOrders()
.repeatWhen(new Func1<Observable<? extends Void>, Observable<?>>() {
@Override
public Observable<Integer> call(final Observable<? extends Void> observable) {
// Retry 5 more times with 5 seconds delay
return observable.delay(5, TimeUnit.SECONDS).zipWith(Observable.range(START_RETRY,
MAX_RETRIES),
new Func2<Void, Integer, Integer>() {
@DebugLog
@Override
public Integer call(Void v,
Integer integer) {
return integer;
}
});
}
}).andThen(apiService.streamOrders().flatMap(new Func1<List<Order>, Observable<Order>>() {
@Override
public Observable<Order> call(List<Order> orderList) {
return Observable.from(orderList);
}
}).filter(new Func1<Order, Boolean>() {
@DebugLog
@Override
public Boolean call(Order order) {
return order.orderRef() == orderId;
}
}).first());
方法([retryWhen]についてのhttp ://reactivex.io/RxJava/javadoc/rx/Completable.html#retryWhen(rx.functions.Func1))? – tynn