Skip to content

bufferTime - Werte in festen Zeitintervallen zusammenfassen und ausgeben

Der bufferTime-Operator fasst Werte in angegebenen Zeitintervallen zusammen und gibt sie als Array aus. Praktisch, wenn Sie den Stream in festen Zeitintervallen aufteilen und wie eine Batch-Verarbeitung behandeln möchten.

🔰 Grundlegende Syntax und Verwendung

ts
import { interval } from 'rxjs';
import { bufferTime } from 'rxjs';

// Werte alle 100ms emittieren
const source$ = interval(100);

source$.pipe(
  bufferTime(1000)
).subscribe(buffer => {
  console.log('In 1 Sekunde gesammelte Werte:', buffer);
});

// Ausgabebeispiel:
// In 1 Sekunde gesammelte Werte: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
// In 1 Sekunde gesammelte Werte: [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
// ...
  • In 1 Sekunde emittierte Werte werden als Array zusammengefasst und nacheinander ausgegeben.

🌐 RxJS Offizielle Dokumentation - bufferTime

💡 Typische Anwendungsmuster

  • Batch-Übertragung in festen Zeitintervallen
  • Zusammengefasste Verarbeitung von Benutzeroperationen (z.B. Drag-Operationen)
  • Datensammlung von Sensoren oder IoT-Geräten
  • Ausdünnung und Kompression von Log- oder Trace-Informationen

🧠 Praktisches Codebeispiel (mit UI)

Puffert Klick-Ereignisse 1 Sekunde lang und gibt sie jede Sekunde zusammen aus.

ts
import { fromEvent } from 'rxjs';
import { bufferTime } from 'rxjs';

// Ausgabebereich erstellen
const output = document.createElement('div');
output.style.marginTop = '10px';
document.body.appendChild(output);

// Klick-Ereignisstrom
const clicks$ = fromEvent(document, 'click');

clicks$.pipe(
  bufferTime(1000)
).subscribe(clickArray => {
  const message = `Klicks in 1 Sekunde: ${clickArray.length}`;
  console.log(message);
  output.textContent = message;
});
  • Zeigt zusammengefasst an, wie oft in 1 Sekunde geklickt wurde.
  • Durch Pufferungsverarbeitung können aufeinanderfolgende Ereignissse zusammen verwaltet werden.

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