首页 > 解决方案 > RxJs Debounce 不发出任何值

问题描述

据我所理解,debounce keeps track of the most recent value from the source Observable, and spawns a duration Observable by calling the durationSelector function

我有以下代码

    import { interval } from 'rxjs';
    import { debounce } from 'rxjs/operators';

    const data = interval(1000);

    const silenceTimer = interval(2000);
    data.pipe(debounce(val => silenceTimer)).subscribe(x => console.log(x));

我希望它会发出 1、3、5 等,但它根本不会发出任何值。我是否正确理解了操作员,还是我做错了什么。谢谢

编辑:我明白为什么现在没有发出任何值!因为间隔 2000 大于生成间隔 1000,所以所有值都被丢弃。如果我将去抖动间隔减少到 500,所有值都将被发出

标签: javascriptrxjsrxjs-pipeable-operators

解决方案


文档

debounce()只有在另一个 Observable 确定的特定时间跨度过去且没有另一个源发射时,才从源 Observable 发射一个值。

注意这句话:没有其他源排放。在您的情况下,间隔将在您的 durationSelector 的 2000 毫秒内继续产生排放,因此debounce()永远没有机会发射。


推荐阅读