0
如何的Rx建立一個美麗的序列,用於要求:RxJava,請求的執行時間必須> 1秒,但<5秒
- 請求的執行時間必須> 1秒(請求可能會提前結束,但結果應該由用戶在1秒後收到,就像它已執行超過1秒)和< 5秒(否則發出超時錯誤)?
我想想序列,但我不知道這是否是最佳的 (原方案):
Observable<Long> timeoutError = Observable.timer(5, TimeUnit.SECONDS)
.concatWith(Observable.error(new Exception("TIMEOUT!")));
Observable<RequestResult> request = Observable.combineLatest(Observable.timer(1, TimeUnit.SECONDS),
Observable.from(request), new Func2<Long, RequestResult, RequestResult>() {
@Override
public RequestResult call(Long aLong, RequestResult result) {
return result;
}
});
Observable.merge(timeoutError, request) (maybe .take(1));
.timeout是好的,非常感謝!但是有了延遲,我們將額外的1秒添加到源觀測值(測試/請求)。如果請求執行時間超過1秒,我們不需要額外的延遲。 – ADK
@ADK更改爲'zip',這是你需要的嗎? –
我已經結束了Observable.combineLatest(Observable.just(request),Observable.timer(1,TimeUnit.SECOND).take(1))。timeout(5,timeUnit.SECOND); – ADK