Эквивалент оператора debx Rx - PullRequest
0 голосов
/ 19 апреля 2020

На самом деле мне нужно реализовать что-то вроде оператора debounce, но давайте рассмотрим пример. Если я установлю debounce на 5 se c, чтобы пользователь мог нажать кнопку 10 раз в течение 5 se c, и сразу после истечения 5 se c последнее событие клика будет учтено.

Что мне нужно, так это вариант, когда 5 se c устанавливается в качестве временного диапазона, и когда пользователь щелкает 10 раз, только первый щелчок будет учитываться немедленно и все остальные клики, которые были произведены в течение 5 se c временной диапазон будет отклонен.

Через 5 секунд c пользователь может начать щелкать снова.

Как это сделать?

1 Ответ

2 голосов
/ 19 апреля 2020

Есть еще один оператор в Rx JS для выполнения sh вашей задачи, throttleTime.

Он подпишется на первое выданное значение и затем будет ждать 5 секунд, а затем снова будет выдавать значение после 5 секунда.

const source = fromEvent(document, 'click').pipe(
  throttleTime(5000),
);

Рабочий пример можно найти здесь: https://stackblitz.com/edit/rxjs-hwviuc

Подробнее о throttleTime можно узнать здесь

...