javascript - RxJS:Rx.Observable.interval 上的 debounceTime 未按预期工作

标签 javascript rxjs observable debouncing

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

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

然而,在下面的代码行中,here 按预期每 2 秒打印一次:

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

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

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

为什么第一个案例没有按预期工作?我的预期有问题吗?

最佳答案

您可能会将 debouncethrottle 混淆。

去抖时间

对于每个项目,等待 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 毫秒打印一个项目。

关于javascript - RxJS:Rx.Observable.interval 上的 debounceTime 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49157834/

相关文章:

javascript - 在 Javascript 中使用普通函数传递数据映射

javascript - 最快的 JavaScript 求和

javascript - 访问和操作订阅的可观察数据

javascript - 为什么这个对象是未定义的?

javascript - PHP 函数的返回如何看起来对 AJAX 和 PHP 使用有效?

Angular 自定义错误处理程序未从 promise 中获取错误类型

angular - 混洗从 Observable 返回的值

内有较长任务的 Angular 间隔管道

angular - 如何从 Observable 内部返回 Observable

javascript - 如何在 Angular 组件中显示来自 Observable 的数据