У меня есть видимая привязка к событию keyUp в поле ввода.
Для каждой нажатой клавиши.Я хочу console.log «Сделай что-нибудь сейчас».
И если в течение 5 секунд не будет нажата ни одна клавиша, я хочу, чтобы console.log «Сделай что-нибудь еще»
import { fromEvent } from 'rxjs';
import { debounceTime, map, switchMap } from 'rxjs/operators';
const searchBox = document.getElementById('search');
const keyup$ = fromEvent(searchBox, 'keyup')
keyup$.pipe(
switchMap((i: any) => 'doSomethingNow'), // I use switchMap here because 'doSomethingNow' is an http request in my real code so that on each key pressed, it cancels the previous http request if it was not finished and start the new http request
debounceTime(2000),
map(_ => 'do something else')
)
.subscribe(console.log);
ЭтоКод только печатать «сделать что-то после отказов» через 5 секунд, но никогда не печатать «DomethingNow» после каждого нажатия клавиши