Saturday 18 February 2023

Example that demonstrates how "switchMap" works:

"SwitchMap " working :


Here are the perfect example to understand working of "switchmap"

Suppose we have an input field that users can type into to search for books in a library. As the user types, we want to make an HTTP request to a server to get book suggestions based on the input. However, we don't want to make a new request for every keystroke, as that would be inefficient. Instead, we want to wait for the user to pause typing for a certain amount of time before making the request.

import statement for angular

import { fromEvent } from 'rxjs'; import { switchMap, debounceTime, distinctUntilChanged } from 'rxjs/operators'; import { ajax } from 'rxjs/ajax';
/* Get data from the search box */ const searchBox = document.getElementById('search-box');
const bookSuggestions$ = fromEvent(searchBox, 'input').pipe( debounceTime(500), // wait 500ms after each keystroke distinctUntilChanged(), // only emit if the value has changed switchMap((event) => { const searchQuery = (event.target as HTMLInputElement).value; return ajax.getJSON(`https://mylibrary.com/books?q=${searchQuery}`); }) ); bookSuggestions$.subscribe((books) => console.log(books));


In this example we first import all the necessary module in angular to achieve functionality of
switchmap. we first create an Observable from the input event of the search box using the fromEvent function. We then use debounceTime(500) to wait for 500ms after each keystroke before emitting the event. This ensures that we don't make a new request for every keystroke. We also use distinctUntilChanged() to only emit events if the search query has changed.

Finally, we use switchMap to transform the emitted events into an Observable that makes an HTTP request to the server using the ajax function. If a new event is emitted while the previous request is still in progress, switchMap will unsubscribe from the previous request and make a new one based on the new event. This ensures that we always get the most up-to-date search results.

No comments:

Post a Comment

AdSense

The Ultimate Guide to Interceptors: Understanding Their Power and Functionality

  The Ultimate Guide to Interceptors: Understanding Their Power and Functionality An interceptor is a service that can intercept HTTP reques...

Follow