如果没有项目被发光,我想在x秒后发出一个项目。我试图使用超时运算符。问题是超时操作员需要先执行至少一个项目才能开始倒计时。来自文档:
“如果在指定的超时持续时间内没有发出下一个项目,则生成的Observable开始反映镜像后备Observable。”
这不是我正在寻找的行为。当我订阅我的observable时,如果特定的时间段过去而没有任何发出的项目,我想发出一个特定的项目。
示例:
getUserLocationFromGPS() //Sometimes I dont receive user location
.timeout(5, TimeUnit.SECONDS, Observable.just(getDefaultLocation())
.subscribe(...);
答案 0 :(得分:2)
final Observable data = yourApi.getData().take(5, TimeUnit.SECONDS);
final Observable fallback = Observable.just("Fallback");
Observable.concat(data, fallback).firstOrError()
.subscribe(
System.out::println
);
如果yourApi.getData()
没有发出任何内容,那么您将收到来自您的后备可观察数据。
如果yourApi.getData()
超时,您将收到来自您的后备可观察数据。
如果yourApi.getData()
正常发出,那么您将从中收到数据。
答案 1 :(得分:0)