現在、私はRxJavaを使用してサーバポーリングを実装しようとしていますが、サーバレスポンスを受信した後にチェーン全体を繰り返す方法についていくつかの調査を行いました。クライアントに送信する前にデータを処理する余分な時間が必要ですが、正確な時刻はわかりませんので、repeatWhen()を使用することはできません特定の時間。私が使用できる唯一のことは、apiの応答後に待つことです。RxJavaを使用したサーバポーリング - サーバレスポンス取得後の繰り返し
アドバイスをいただければ幸いです!
次のコードスニペットです:
retrofitService.requestPolling()
.repeat() // do not wait to call server so many times
.takeUntil(new Func1<PollResponse, Boolean>() {
@Override
public Boolean call(PollResponse pollResponse) {
return pollResponse.mComplete;
}
})
.doOnNext(new Action1<FlightSearchPollResponse>() {
@Override
public void call(pollResponse pollResponse) {
// update UI here
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<PollResponse>() {
@Override
public void onCompleted() {
}
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(PollResponse pollResponse) {
});
編集:私は、RxJavaに新しいですだけ背圧と呼ばれるこのトピックを得た、との記事がたくさんあるが、それに対処する方法を説明し、私がしたいいけないので、このレスポンスをキャッシュすると、サブジェクトが適切なオプションになるようですが、いつプルするかを制御できます。
http://akarnokd.blogspot.com/2015/06/subjects-part-1.html
そして@Gary LOのおかげ