Skip to content

concat - Streams nacheinander verketten

concat ist eine Erstellungsfunktion, die sequenziell mehrere Observables in der angegebenen Reihenfolge ausführt. Die Veröffentlichung der nächsten Observable beginnt, nachdem die vorherige Observable complete ist.

Grundlegende Syntax und Verwendung

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);
// Ausgabe: A → B → C → D
  • Nachdem alle obs1$ ausgegeben wurden, beginnt die Ausgabe von obs2$.
  • Wichtig ist, dass die Streams nicht gleichzeitig, sondern "der Reihe nach" ausgeführt werden.

🌐 Offizielle RxJS-Dokumentation - concat

Typische Nutzungsmuster

  • Schrittweise Verarbeitung: Wenn Sie mit dem nächsten Prozess fortfahren wollen, nachdem der vorherige abgeschlossen wurde
  • Reihenfolgegarantierte API-Anforderungen: Wenn Sie eine Reihe von asynchronen Operationen nacheinander durchführen wollen
  • Kontrolle von UI-Ereignissen, bei denen die Reihenfolge wichtig ist, z.B. Animationen und Benachrichtigungen

Praktisches Code-Beispiel (mit UI)

Beispiel für die Anzeige von Lademeldungen und Datenlisten der Reihe nach.

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

// Ausgabebereich erstellen
const output = document.createElement('div');
output.innerHTML = '<h3>concat Praxisbeispiel:</h3>';
document.body.appendChild(output);

// Lade-Stream
const loading$ = timer(0, 1000).pipe(
  map((count) => `⏳ Laden... (${count + 1}s)`),
  take(3) // Nur 3 Sekunden lang ausgeben
);

// Datenlisten-Stream
const data$ = of('🍎 Apple', '🍌 Banana', '🍇 Grape');

// Mit concat der Reihe nach anzeigen
concat(loading$, data$).subscribe((value) => {
  const item = document.createElement('div');
  item.textContent = value;
  output.appendChild(item);
});
  • Die Lademeldung wird zunächst dreimal angezeigt,
  • Die Datenliste wird dann der Reihe nach angezeigt.
  • Mit concat kann eine natürliche "Schritt-für-Schritt"-Anzeige leicht erreicht werden.

Verwandte Operatoren

  • concatWith - Pipeable Operator Version (wird in der Pipeline verwendet)
  • concatMap - Jeden Wert sequentiell abbilden und zusammenführen
  • merge - Parallel kombinieren (Erstellungsfunktion)

Veröffentlicht unter CC-BY-4.0-Lizenz.