¿Cuál es la palabra clave yield en JavaScript?

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:

Publicación traducida automáticamente

Artículo escrito por Abhishek7 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *