Javascript. Todo lo que necesitas saber sobre generadores

Una aproximación a las funciones “generadoras” de Javascript

Funciones generadoras

{ 
value: Any,
done: true|false
}

Un ejemplo sencillo

Image for post
Image for post
{ 
done: false,
value: “first value”
}
{ 
done: false,
value: “end of the function”
}
{ 
done: true,
value: undefined
}
function *  generatorFunc() {
yield 'a';
return 'b'; // Generator ends here.
yield 'a'; // Will never be executed.
}

Implementando “iterables” mediante generadores

Image for post
Image for post
Image for post
Image for post

Generadores y Promises

Image for post
Image for post
Image for post
Image for post

Flujos de datos infinitos

Image for post
Image for post

Y por si fuera poco…

function* dataConsumer() {
console.log('Started');
console.log(`1. ${yield}`); // (1)
console.log(`2. ${yield}`); // (2)
return 'result';
}
const genObj = dataConsumer();
genObj.next()
// Started
// { value: undefined, done: false }
genObj.next('a')
1. a
{ value: undefined, done: false }
{ value: undefined, done: false }
genObj.next('b')
2. b
{ value: 'result', done: true }

Ventajas de los generadores

Image for post
Image for post
take(3, [‘a’, ‘b’, ‘c’, ‘d’, ‘e’]); // a b ctake(7, generateNaturalNumber());// 1 2 3 4 5 6 7

Desventajas

Conclusión

¿Quieres recibir más artículos como este?

Entre paseo y paseo con Simba desarrollo en Symfony y React

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store