Skip to content

concat - Streams sequentieel combineren

concat is een Creation Function die meerdere Observables sequentieel uitvoert in de opgegeven volgorde. Nadat de vorige Observable complete is, begint de emissie van de volgende Observable.

Basissyntaxis en gebruik

ts
import { concat, of, delay } from 'rxjs';

const obs1$ = of('A', 'B').pipe(delay(100));
const obs2$ = of('C', 'D').pipe(delay(100));

concat(obs1$, obs2$).subscribe(console.log);
// Output: A → B → C → D
  • Nadat alle emissies van obs1$ voltooid zijn, begint de emissie van obs2$.
  • Het belangrijkste punt is dat streams "op volgorde" stromen, niet gelijktijdig.

🌐 RxJS Officiële Documentatie - concat

Typische toepassingspatronen

  • Stapsgewijze verwerking: Wanneer je na voltooiing van de vorige stap wilt doorgaan naar de volgende
  • API-requests met gegarandeerde volgorde: Wanneer je een reeks asynchrone operaties op volgorde wilt uitvoeren
  • Controle van UI-events zoals animaties en notificaties waar volgorde belangrijk is

Praktisch codevoorbeeld (met UI)

Een voorbeeld van het sequentieel weergeven van een laadmelding en een datalist.

ts
import { concat, of, timer } from 'rxjs';
import { map, take } from 'rxjs';

// Outputgebied aanmaken
const output = document.createElement('div');
output.innerHTML = '<h3>Praktisch voorbeeld van concat:</h3>';
document.body.appendChild(output);

// Laadstream
const loading$ = timer(0, 1000).pipe(
  map((count) => `⏳ Laden... (${count + 1}s)`),
  take(3) // Emit alleen gedurende 3 seconden
);

// Datalist stream
const data$ = of('🍎 Apple', '🍌 Banana', '🍇 Grape');

// concat gebruiken voor sequentiële weergave
concat(loading$, data$).subscribe((value) => {
  const item = document.createElement('div');
  item.textContent = value;
  output.appendChild(item);
});
  • Eerst wordt de laadmelding 3 keer weergegeven,
  • Daarna wordt de datalist op volgorde weergegeven.
  • Met concat kun je eenvoudig een natuurlijke "gefaseerde weergave" realiseren.

Gerelateerde operators

  • concatWith - Pipeable Operator versie (voor gebruik in pipeline)
  • concatMap - Map en combineer elke waarde sequentieel
  • merge - Creation Function voor parallelle combinatie

Uitgebracht onder de CC-BY-4.0 licentie.