【发布时间】:2018-09-27 19:33:26
【问题描述】:
在 rxjs 可观察链中,我如何在经过一定时间后访问可观察的当前值?本质上,我正在寻找类似tap operator 的东西,但只有在经过一定时间而没有看到可观察值的情况下才会执行。所以实际上它就像是点击和超时的组合。
我在想像下面这样的事情
observable$.pipe(
first(x => x > 5),
tapAfterTime(2000, x => console.log(x)),
map(x => x + 1)
).subscribe(...);
这是一个虚构的例子,“tapAfterTime”函数不是真实的。但基本思想是,如果订阅后 2000 毫秒过去了,并且 observable 没有看到大于 5 的值,那么无论 observable 的当前值是什么,都执行 tapAfterTime 回调函数。如果我们在 2000 毫秒之前看到大于 5 的值,那么 tapAfterTime 回调将永远不会运行,但 map 函数将始终按预期运行。
是否有实现此目的的运算符或运算符的任何组合?
【问题讨论】:
-
应该每隔 2000 毫秒的静默间隔运行一次,还是在前一个 x>5 发射值之后只运行一次?
-
哦,因为它包含'first',我猜它应该运行一次
-
debounceTime learnrxjs.io/operators/filtering/debouncetime.html 或 debounce learnrxjs.io/operators/filtering/debounce.html?
标签: javascript angular typescript rxjs rxjs-pipeable-operators