Использование Monix Debounce Observable

Я пробую некоторые из операций, которые я мог бы сделать на Observable от Monix. Я наткнулся на этот оператор debounce и не мог понять его поведение:

Observable.interval(5.seconds).debounce(2.seconds)

Этот выше только излучает Long каждые 5 секунд.

Observable.interval(2.seconds).debounce(5.seconds)

Этот, однако, ничего не излучает. Так какова реальная цель оператора debounce и в каких случаях я могу его использовать?

1 ответ

Решение

Термин debounce происходит от механических реле. Вы можете думать об этом как о частотном фильтре: o.debounce(5.seconds) отфильтровывает любые события, которые генерируются чаще, чем раз в 5 секунд.

Пример того, где я использовал это, где я ожидаю получить серию подобных событий в быстрой последовательности, и мой ответ на каждое событие одинаков. Разобравшись, я могу уменьшить объем работы, которую мне нужно выполнить, сделав пакет похожим на одно событие.

Это бесполезно в таких ситуациях, как ваши примеры, где частота входного сигнала постоянна, поскольку единственные возможности - то, что он ничего не делает или отфильтровывает все.

Другие вопросы по тегам