Skip to content
On this page

Comment utiliser l'opérateur window sur RxJS ?

Pour utiliser l'opérateur window de RxJS, vous devez d'abord importer la méthode window depuis le module RxJS correspondant :

javascript
import { window } from 'rxjs';

Ensuite, vous pouvez l'utiliser en l'appliquant à un flux d'éléments observable en utilisant la syntaxe .pipe() :

javascript
source.pipe(window(closingNotifier));

L'opérateur window prend un paramètre obligatoire qui est un autre observable, que l'on appelle le "notificateur de fermeture". Chaque fois que ce notificateur émet un événement, l'opérateur window crée une nouvelle fenêtre et place tous les éléments émis par l'observable source dans la fenêtre en cours jusqu'à ce que le notificateur émette un nouvel événement.

Voici un exemple simple d'utilisation de l'opérateur window :

javascript
import { of, interval } from 'rxjs';
import { window, mergeAll } from 'rxjs/operators';

// Emet les valeurs 1, 2, 3, 4, 5, ... toutes les secondes
const source = interval(1000);

// Emet la valeur 0 toutes les 5 secondes
const closingNotifier = interval(5000);

const example = source.pipe(
  // Crée une fenêtre pour chaque événement émis par closingNotifier
  window(closingNotifier),
  // Fusionne toutes les fenêtres en un seul flux d'éléments
  mergeAll()
);

// Imprime la valeur courante de chaque fenêtre toutes les secondes
const subscription = example.subscribe(val =>
  console.log(`Fenêtre : ${val}`)
);

// Après 10 secondes, annule l'abonnement
setTimeout(() => subscription.unsubscribe(), 10000);

Cet exemple crée une nouvelle fenêtre pour chaque événement émis par le notificateur de fermeture, et fusionne ensuite toutes les fenêtres en un seul flux d'éléments. Chaque fois qu'une valeur est émise par l'observable source, elle est placée dans la fenêtre en cours jusqu'à ce que le notificateur émette un nouvel événement, auquel cas une nouvelle fenêtre est créée.