RxJS

Mon, 19 May 2025 12:54:24 GMT

 Properties

Key Value
Identifier rxjs
Name RxJS
Type Topic
Creation timestamp Mon, 19 May 2025 12:54:24 GMT
Modification timestamp Tue, 02 Sep 2025 09:20:22 GMT

To chain Observables where one request depends on the response of another, use the RxJS switchMap operator:

Example 1

this.myService.fetchSomething().pipe(
  switchMap((something) => {
    return this.myOtherService.fetchSomethingElse(something);
  })
).subscribe(
  (somethingElse) => { ... }
);

Example 2

import { HttpClient } from '@angular/common/http';
import { switchMap } from 'rxjs/operators';
import { Observable } from 'rxjs';

// Assuming 'http' is an instance of HttpClient
function getFirstApiData(): Observable<any> {
  return http.get('https://api.example.com/data1');
}

function getSecondApiData(id: string): Observable<any> {
  return http.get(`https://api.example.com/data2/${id}`);
}

getFirstApiData().pipe(
  switchMap(response1 => {
    // Extract data needed for the second API call from response1
    const id = response1.someId; 
    return getSecondApiData(id);
  })
).subscribe(response2 => {
  console.log('Result from second API:', response2);
});

To execute Observables in sequence when the requests are not dependent on each other's responses, use concatMap.

To execute Observables in parallel and return a collection of responses in the order that they finished, use mergeMap.

To execute Observables in parallel and preserve the order of responses, use forkJoin.

In most situations, you will want to use either switchMap or forkJoin.

Back to top

 Context

 Topic resources