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