RxJS:Rx.Observable.interval上的debounceTime没有按预期工作

时间:2018-03-07 17:24:18

标签: javascript rxjs observable debouncing

在下面的代码行中,我希望每2秒打印一次here。但是没有打印出来:

Rx.Observable.interval(1000).debounceTime(2000).subscribe(x => console.log('here'))

但是,在以下代码行中,{2}按预期每2秒打印一次:

here

在第一种情况下,我预计1秒钟的事件流将被去抖动到2秒。这似乎不起作用。

在第二种情况下,我预计2秒周期的事件流将被去抖动到1秒。这似乎有效。

为什么第一个案例没有按预期工作?我的期望有什么不对吗?

2 个答案:

答案 0 :(得分:2)

第一种情况的问题是你每秒都在创建一个新的间隔,但告诉observable要等到2秒后才能将对象传递给订阅。由于interval值小于debounceTime值,因此您的订阅永远不会解决"。

答案 1 :(得分:2)

您可能会将 debounce 限制混淆。

debounceTime

对于每件商品,请等待X毫秒,直到没有其他商品被发出,只有才会发出商品。

Rx.Observable.interval(1000).debounceTime(2000).subscribe(x => console.log('here'))

所有项目都被删除,因为项目将始终在2000毫秒内发出。

throttleTime

如果在最后一个X毫秒期间没有发出其他项目,则发出一个项目。否则,该项目将被删除。

Rx.Observable.interval(1000).throttleTime(2000).subscribe(x => console.log('here'))

每2000毫秒打印一个项目。