Blog de Gonzalo

GENERADORES EN JAVASCRIPT

En este post os voy a hablar de los generadores en javascript este tipo de funciones, las generadoras, pueden ser detenidas en medio de la ejecución de modo que cuando su callback es llamado retoma la ejecución desde el punto en que la dejó. La ejecución de estas funciones pueden ser detenidas duando se ejecuta una expresión con yield, donde la función conserva su estado de variables. La detención de la ejecución de la función es, por tanto, ejecutada desde la propia función generadora con yield, mientras que la reanudación de la ejecución sólo puede llevarse a cabo externamente. Esta característica, se puede denominar como trabajo cooperativo en JavaScript, tiene muchas utilidades.
Una analogía que he visto en internet para entender los generadores sería imaginarnos viendo una película en dvd hasta el momento en que suena el timbre con la pizza. En ese instante detenemos la serie que estamos viendo, recogemos la pizza y reanudamos la película justo en el punto en que la dejamos.
Las características de este tipo de funciones son las siguientes:

  • Son declaradas mediante un * después de la palabra clave function (function * generatorExample()) para diferenciarlas de las funciones normales.
  • Devuelven un objeto sobre el que podemos invocar el método next().


function* counter() {
  var indice = 0;
  while(true)
    yield indice++;
}

var gen = counter();

console.log(gen.next().value); // 0
console.log(gen.next().value); // 1
console.log(gen.next().value); // 2
// ...

Os recomiendo leer el post sobre generadores en php.

Compartir en twitter