angularangular2-observablesdebouncingangular2-pipe

How to bypass debounceTime in angular


I have this text input with a debounceTime pipe, so that we don't hit the server too often while the user is typing the word:

this.keyUp$
  .pipe(debounceTime(500))
  .subscribe(data => this.onInputChanged.emit(data));

However, if the user hits Enter after entering the data, I would like to call onInputChanged immediately.

How can I bypass the debounceTime pipe depending on the key?


Solution

  • You can merge your streams after debounceTime

    this.keyUp$.pipe(
            debounceTime(500),
            mergeWith(this.keyEnter$))
           .subscribe(data => this.onInputChanged.emit(data));
    

    just keep in mind that after debounce time it will still emmit, so you have to add additiona filtering to ignore this pipeline if request is already in progress