💡 This operator is popular in scenarios such as type-ahead where the rate of user input must be controlled!
( StackBlitz | jsBin | jsFiddle )
// RxJS v6+
import { fromEvent, timer } from 'rxjs';
import { debounceTime, map } from 'rxjs/operators';
const input = document.getElementById('example');
//for every keyup, map to current input value
const example = fromEvent(input, 'keyup').pipe(map(i => i.currentTarget.value));
//wait .5s between keyups to emit current value
//throw away all other values
const debouncedInput = example.pipe(debounceTime(500));
//log values
const subscribe = debouncedInput.subscribe(val => {
console.log(`Debounced Input: ${val}`);
});- debounceTime 📰 - Official docs
- Transformation operator: debounce and debounceTime 📹 💵 - André Staltz
📁 Source Code: https://github.com/ReactiveX/rxjs/blob/master/src/internal/operators/debounceTime.ts