La palabra clave yield se usa para reanudar o pausar una función de generador de forma asíncrona. Una función de generador es como una función normal, pero la diferencia es que cada vez que la función devuelve algún valor, lo hace con la ayuda de la palabra clave ‘rendimiento’ en lugar de devolverlo. No se puede llamar al rendimiento desde funciones anidadas o desde devoluciones de llamada.
La expresión de rendimiento devuelve un objeto con dos propiedades, «valor» que es el valor real y «hecho» que es un valor booleano, devuelve verdadero cuando la función del generador está completa, de lo contrario devuelve falso.
Si pausamos la expresión yield, la función generadora también se pausará y se reanudará solo cuando llamemos al método next(). Cuando se encuentra el método next() , la función sigue funcionando hasta que se enfrenta a otra expresión de rendimiento o de retorno.
Ejemplo 1:
function* showPrices(i) { while (i < 3) { yield i++; } } //creating an object for our function showPrices const gfg = showPrices(0); //return 0 because 0 value is passed to the showPrices yield expression console.log(gfg.next().value); // return 1 console.log(gfg.next().value); //return 2 console.log(gfg.next().value);
Producción:
Ejemplo 2:
function* geeksforGeeks() { /*expression paused here and return value is undefined as nothing is declared*/ yield; //wait for next() to finish gfg(yield "Welcome to GFG"); } function gfg(x) { console.log("Hello World ", x) } var generator = geeksforGeeks(); //return undefined console.log(generator.next()); //return Welcome to GFG console.log(generator.next()); /*done remains false as we have not called next so that "Hello World" is still left there to process*/
Producción: