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, все значения будут выданы


person Toan Nguyen    schedule 12.09.2019    source источник


Ответы (1)


Из документов:

debounce() Выдает значение из источника Observable только после того, как определенный промежуток времени, определенный другим Observable, прошел без другого источника излучения.

Обратите внимание на фразу: без выброса другого источника. В вашем случае interval будет продолжать генерировать выбросы в пределах 2000 мс вашего durationSelector, поэтому debounce() никогда не получит шанс испустить.

person dmcgrandle    schedule 13.09.2019
comment
Если вы посмотрите на пример внизу цитированной вами ссылки, вы увидите, что интервал используется для выдачи последнего значения. - person Toan Nguyen; 13.09.2019
comment
Да, это не тот интервальный вызов, о котором я имел в виду. Интервал в пределах data будет продолжать генерировать выбросы в пределах 2000 мс вашего durationSelector (второй интервал), поэтому debounce() никогда не получит шанса на излучение. - person dmcgrandle; 13.09.2019