在下面的代码行中,我希望每2秒打印一次here
。但是没有打印出来:
Rx.Observable.interval(1000).debounceTime(2000).subscribe(x => console.log('here'))
但是,在以下代码行中,{2}按预期每2秒打印一次:
here
在第一种情况下,我预计1秒钟的事件流将被去抖动到2秒。这似乎不起作用。
在第二种情况下,我预计2秒周期的事件流将被去抖动到1秒。这似乎有效。
为什么第一个案例没有按预期工作?我的期望有什么不对吗?
答案 0 :(得分:2)
第一种情况的问题是你每秒都在创建一个新的间隔,但告诉observable要等到2秒后才能将对象传递给订阅。由于interval
值小于debounceTime
值,因此您的订阅永远不会解决"。
答案 1 :(得分:2)
您可能会将 debounce 与限制混淆。
对于每件商品,请等待X毫秒,直到没有其他商品被发出,只有才会发出商品。
Rx.Observable.interval(1000).debounceTime(2000).subscribe(x => console.log('here'))
所有项目都被删除,因为项目将始终在2000毫秒内发出。
如果在最后一个X毫秒期间没有发出其他项目,则发出一个项目。否则,该项目将被删除。
Rx.Observable.interval(1000).throttleTime(2000).subscribe(x => console.log('here'))
每2000毫秒打印一个项目。