Использование 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 секунд.
Пример того, где я использовал это, где я ожидаю получить серию подобных событий в быстрой последовательности, и мой ответ на каждое событие одинаков. Разобравшись, я могу уменьшить объем работы, которую мне нужно выполнить, сделав пакет похожим на одно событие.
Это бесполезно в таких ситуациях, как ваши примеры, где частота входного сигнала постоянна, поскольку единственные возможности - то, что он ничего не делает или отфильтровывает все.