Usando la función* Declaración en JavaScript

La declaración de función* se usa para definir un generador que devuelve un objeto Generador. Los generadores son muy potentes para la programación asincrónica, ya que tienen como objetivo resolver los problemas de devolución de llamada.

En un generador, se usa la palabra clave yield en lugar de return. La declaración de rendimiento suspende la ejecución de la función y devuelve un valor a la persona que llama, pero retiene suficiente estado para permitir que la función se reanude desde el último estado de ejecución. La función, por lo tanto, continúa la ejecución inmediatamente después de la última ejecución de rendimiento. El método next() se usa para devolver un objeto con dos propiedades, done y value, y se puede usar para pasar al siguiente estado del generador.

Sintaxis:

function* function_name(param1, param2...)
{
  function body
}

Los siguientes ejemplos demuestran el uso de la declaración de función*.

Ejemplo 1:

HTML

<html>
<body>
  <script>
  
    // Declaring a generator function
    function* generator(i) {
      yield i;
      yield i + 50;
      yield i + 100;
    }
  
    // Initialize the generator
    const generate = generator(50);
  
    // Console out the object returned
    // by the next() method
    let nextValObj = generate.next();
  
    // Console out the value of the object
    console.log(nextValObj.value);
  
    // Console out next iterations
    // of the generator
    console.log(generate.next().value);
    console.log(generate.next().value);
  
    // This value would be undefined as
    // the last defined one is i + 100
    console.log(generate.next().value);
  </script>
</body>
</html>

Producción:

50
100
150
undefined

Ejemplo 2:

HTML

<html>
<body>
  <script>
    function* powerup(n) {
      for (let num = n; ; num *= n) {
  
        // Yield out the current number
        yield num;
      }
    }
    for (let power of powerup(5)) {
  
      // Break if the number is
      // more than 1024
      if (power > 1024)
        break;
  
      console.log("Yielded:", power)
    }
  </script>
</body>
</html>

Producción:

Yielded: 5
Yielded: 25
Yielded: 125
Yielded: 625

Publicación traducida automáticamente

Artículo escrito por priyavermaa1198 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 *