Пример Plunkr: https://plnkr.co/edit/NZwb3ol8CbZFtSc6Q9zm?p=preview
Я знаю, что для rxjs есть 3 метода дросселя (5.0 beta.4):
auditTime()
, throttleTime()
и debounceTime()
Я ищу поведение, которое lodash делает по умолчанию на газе:
- 1) Дайте мне первое значение немедленно!
- 2) для последовательных значений удерживайте значения для заданной задержки, а затем отправьте последнее полученное значение
- 3) когда задержка дросселя истекла, вернитесь в состояние (1)
Теоретически это должно выглядеть так:
inputObservable
.do(() => cancelPreviousRequest())
.throttleTime(500)
.subscribe((value) => doNextRequest(value))
Но
-
throttleTime
никогда не дает мне последнее значение, если оно генерируется в таймауте газа -
debounceTime
не срабатывает сразу -
auditTime
не срабатывает сразу
Могу ли я объединить любой из методов rxjs для достижения описанного поведения?