# "concat" vs "merge" operators

In 
Published 2024-01-06

This tutorial explains which are the differences between "concat" and "merge" operators in Angular.

In RxJS, both concat and merge are operators used to combine multiple observables. However, they behave differently in terms of how they handle the emissions of values from the source observables.

  • concat: Concatenates the source observables in a strict order. It subscribes to the first observable and waits for it to complete before moving on to the next one. The order of emission is maintained, ensuring that values are emitted sequentially.
import { concat, of } from 'rxjs';

const observable1 = of(1, 2, 3);
const observable2 = of('A', 'B', 'C');

const result = concat(observable1, observable2);
result.subscribe(value => console.log(value));
// Output: 1, 2, 3, 'A', 'B', 'C'
  • merge: Merges the emissions of the source observables concurrently. It subscribes to all observables simultaneously and emits values as they arrive, without waiting for the completion of the previous observable. The order of emission may not be maintained.
import { merge, of } from 'rxjs';

const observable1 = of(1, 2, 3);
const observable2 = of('A', 'B', 'C');

const result = merge(observable1, observable2);
result.subscribe(value => console.log(value));
// Output: 1, 'A', 2, 'B', 3, 'C' (order may vary)