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
yieldpausa y le entrega un valor a quien llama.- El argumento de
nextse vuelve el valor de eseyield. returnythrowsobre el generador lo manejan desde afuera.
Palabras clave y builtins usados aquí
constfunctionifletreturnwhileyield
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.
Paso 2 de 2 en Generadores; paso 11 de 16 en Funciones y patrones.