我有
BehaviorSubject<Boolean>
,我想知道如何获得以下行为:
False
它应该等待10秒才能发出值True
到来时,它立即发出值,并且如果存在则取消之前的10秒计时器您需要一个
flatMap
来引入延迟,并需要一个 takeUntil
连接到其中,以便在 true 出现时取消延迟。
var subject = ...
subject.flatMap(value -> {
if (value) {
return Observable.just(true);
}
return Observable.just(false)
.delay(10, TimeUnit.SECONDS)
.takeUntil(
subject.filter(value2 -> value2)
);
});