Skip to content

bufferCount - Raccogli Valori per Conteggio Specificato

L'operatore bufferCount raggruppa insieme un numero specificato di valori emessi e li emette come array. Questo è utile per l'elaborazione batch dove vuoi separare i valori per conteggio.

🔰 Sintassi e Utilizzo Base

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

// Emetti valori ogni 100ms
const source$ = interval(100);

source$.pipe(
  bufferCount(5)
).subscribe(buffer => {
  console.log('Valori ogni 5:', buffer);
});

// Output:
// Valori ogni 5: [0, 1, 2, 3, 4]
// Valori ogni 5: [5, 6, 7, 8, 9]
// ...
  • Emette un array di 5 valori alla volta.
  • È unico in quanto raggruppa su base di conteggio, non su base temporale.

🌐 Documentazione Ufficiale RxJS - bufferCount

💡 Pattern di Utilizzo Tipici

  • Suddivisione e invio pacchetti dati
  • Salvataggio batch o elaborazione batch per conteggio specifico
  • Aggregazione di eventi di input per un certo numero di occorrenze

🧠 Esempio di Codice Pratico (con UI)

Questo è un esempio di visualizzazione di un riepilogo delle pressioni di tasti ogni 5 pressioni.

ts
import { fromEvent } from 'rxjs';
import { map, bufferCount } from 'rxjs';

// Crea area di output
const output = document.createElement('div');
output.style.marginTop = '10px';
document.body.appendChild(output);

// Stream eventi input da tastiera
fromEvent<KeyboardEvent>(document, 'keydown').pipe(
  map(event => event.key),
  bufferCount(5)
).subscribe(keys => {
  const message = `5 input: ${keys.join(', ')}`;
  console.log(message);
  output.textContent = message;
});
  • Ogni volta che un tasto viene premuto cinque volte, quelle cinque pressioni vengono visualizzate insieme.
  • Puoi sperimentare il processo di aggregazione in base al conteggio.

Pubblicato sotto licenza CC-BY-4.0.