Filter only emits those items from an Observable that pass a predicate test, while distinctUntilChanged only emits when the current value is different from the last. The semantics of Angular dictate that you use promises as a sort of ‘callback handle’ – do something asynchronous in a service, return a promise, and when the asynchronous work is done, the promise’s then function is triggered. What is a Promise? Angular 10 Promise by Example # angular. Now debounce will make the request wait 500 milliseconds until the events are fired (until requests are sent to the server) – events will not be sent to the server until you have finished typing in the request. In a larger Angular app, it is a bad practice to call functions, especially Angular functions, inside the constructor. There are two ways we like to handle asynchronous functions in Angular one is via Promises and the other via Observables. This means only one API call/request will go to the server.