Un generador en JavaScript consta de una función generadora que muestra un objeto iterable Generator. La palabra reservada
yield
se usa para pausar y reanudar una función generadora. Fuente: aquí
La estructura del Generador consta con la palabra function seguido de un asterísco * function*
ésta es una función generadora heredada.
function* gen() { }
El resultado que se quiere obtener se coloca al lado derecho de yield
y se puede tener tantos yield que se desee.
function* gen(){
yield 1;
yield 2;
yield 3;
}
Para poder iterar con el generador, se puede inicializar un valor con la función generadora:
const g = gen();
Entre las propiedades del iterador está next()
.
console.log(g.next());
// > Expected Output
// > {value: 1, done: false}
1
por el valor al lado derecho del primer yield
.done
es false
porque mientras haya otro yield por operar será falso.<aside>
💡 Será true
cuando no haya nada que mostrar y la salida mostrará {value: undefined, done: true}
.
</aside>
Crearemos un generador que itere un array y muestre el elemento en cada iteracion con yield
.
function* iterate(array){
for(let value of array){
yield value;
}
}
Probaremos iniciando la funcion y pasandole un array.
const it = iterate(['Oscar', 'Omar', 'Ana', 'Lucia', 'Juan']);