Generator

JavaScript 🟡 Mid

Definition

Fonction speciale (function*) qui peut se suspendre via yield et reprendre. Retourne un iterateur. Permet la generation paresseuse de sequences potentiellement infinies.

Analogie

Un livre dont tu tournes les pages une par une (yield) : l'histoire ne se deroule que quand tu le demandes.

Exemple de code

function* fibonacci() {
  let [a, b] = [0, 1];
  while (true) {
    yield a;
    [a, b] = [b, a + b];
  }
}
const fib = fibonacci();
fib.next().value; // 0, 1, 1, 2...

Cas d'usage

Sequences paresseuses, pagination, flux de donnees, implementation de iterables custom.

#core#ES6#avance