typestar

Generadores, más a fondo en JavaScript

Comunicación en dos sentidos: yield envía hacia afuera, next hacia adentro.

function* accumulator(start = 0) {
  let total = start;
  while (true) {
    const received = yield total;
    if (received === undefined) return total;
    total += received;
  }
}

const running = accumulator();
console.log(running.next().value);
console.log(running.next(10).value);
console.log(running.next(5).value);
console.log(running.next().done);

function* inner() { yield 1; yield 2; }
function* outer() { yield 0; yield* inner(); yield 3; }
console.log([...outer()]);

Cómo funciona

  1. yield pausa y le entrega un valor a quien llama.
  2. El argumento de next se vuelve el valor de ese yield.
  3. return y throw sobre el generador lo manejan desde afuera.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
18
Caracteres a escribir
461
Tokens
145
Ritmo de tres estrellas
105 tpm

Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 83 segundos.

Escribe este fragmento

Paso 2 de 2 en Generadores; paso 11 de 16 en Funciones y patrones.

← Anterior Siguiente →