¿Cómo funciona 'yield' en ES6?

Entendiendo 'yield' en ES6

Para entender cómo funciona 'yield' en ES6, es importante comprender primero lo que es una función generadora. Una función generadora es un tipo de función en JavaScript que puede ser pausada y reanudada, sin perder su estado interno. Este tipo de funciones se introdujo en la versión ES6 de JavaScript y están marcadas por la palabra clave 'function*'.

La palabra clave 'yield' es lo que permite pausar y reanudar estas funciones. Cuando 'yield' se utiliza en una función generadora, la ejecución de la función se pausa en ese punto y se devuelve el valor indicado.

Un ejemplo básico de una función generadora y el uso de 'yield' podría ser el siguiente:

function* generadora() {
  console.log("Inicio");
  yield 1;
  console.log("Continúa");
  yield 2;
  console.log("Fin");
}

let iterador = generadora();

console.log(iterador.next()); // { value: 1, done: false }
console.log(iterador.next()); // { value: 2, done: false }
console.log(iterador.next()); // { value: undefined, done: true }

Entender cómo funciona 'yield' en ES6 es esencialmente entender cómo las funciones generadoras pueden ser pausadas y reanudadas sin perder su estado.

En términos de mejores prácticas, una delas más comunes es utilizar el bucle for...of para recorrer las funciones generadoras. Esto se debe a que las funciones generadoras son iterables, lo que significa que se pueden usar con cualquier construcción que espere un iterable, como el bucle for...of de ES6.

A pesar de su utilidad, las funciones generadoras y 'yield' en ES6 no se deben utilizar en exceso. Se considera una mala práctica utilizar funciones generadoras para soluciones en las que una solución convencional con Promesas o funciones async/await podría ser más apropiada. En cambio, las funciones generadoras y 'yield' en ES6 se utilizan mejor para situaciones donde se necesita mantener un estado que se puede pausar y reanudar, como en el recorrido de árboles o gráficos.

¿Te resulta útil?