RxJS - Opérateur de transformation bufferCount
Dans le cas de l'opérateur buffercount, il collectera les valeurs de l'observable sur laquelle il est appelé et émettra la même chose lorsque la taille de tampon donnée à buffercount correspond. Il faut 2 argumentsbuffersize et le second est startBufferEvery c'est-à-dire qu'il comptera les nouvelles valeurs de startBufferEvery si elles sont données ou bien depuis le début de l'observable source.
Syntaxe
bufferCount(bufferSize: number, startBufferEvery: number = null): Observable
Paramètres
bufferSize - La taille du tampon à émettre.
Valeur de retour
Un observable sera retourné, qui aura un tableau de valeurs tamponnées.
Nous verrons un exemple fonctionnel de bufferCount ()
Exemple 1
import { fromEvent } from 'rxjs';
import { bufferCount } from 'rxjs/operators';
let btn = document.getElementById("btnclick");
let btn_clicks = fromEvent(btn, 'click');
let buffered_array = btn_clicks.pipe(bufferCount(4));
buffered_array.subscribe(arr => console.log(arr));
Dans l'exemple ci-dessus, bufferSize est 4. Ainsi, après un décompte de 4 clics, le tableau d'événements de clic est collecté dans un tableau et affiché. Puisque nous n'avons pas donné le startBufferEvery, les valeurs seront comptées depuis le début.
Production
Exemple 2
import { fromEvent } from 'rxjs';
import { bufferCount } from 'rxjs/operators';
let btn = document.getElementById("btnclick");
let btn_clicks = fromEvent(btn, 'click');
let buffered_array = btn_clicks.pipe(bufferCount(4, 2));
buffered_array.subscribe(arr => console.log(arr));
Dans cet exemple, nous avons ajouté startBufferEvery, donc après tous les 2 clics, il affichera un nombre de tampons de 4 événements de clic.