¿Qué entender la función Generador en JavaScript?

Los generadores generan valor sobre la marcha, lo que significa que siempre que haya una necesidad de ese valor, solo se generará. Significa que el valor se genera pero no se almacena en la memoria, por lo que lleva menos tiempo ejecutarlo. Utiliza el símbolo de asterisco (*) después de la función de palabra clave, es decir , función * para decirle a javaScript que es una función generadora. La función generadora devuelve el objeto.

Casos de uso:

  1. Se usa en bucle infinito y no detiene la computadora ni congela su programa.
  2. Se utiliza como iterador.

Tiene un tipo especial de palabra clave de retorno, es decir , Rendimiento. El rendimiento del propósito es ejecutar un código y luego devolver el valor, ejecutar más código y devolver el valor así.

Ejemplo: es útil cuando es costoso hacer cada paso del rendimiento, como cuando está alcanzando un punto final de API en cada rendimiento y no sabe cuántos resultados querrán los usuarios, por lo que en ese caso, puede retrasar esas llamadas API hasta son realmente necesarios.

Los generadores tienen dos propiedades:

  1. Propiedad de valor
  2. propiedad terminada

Sintaxis:

Javascript

function* Generator(){
  yield 1
  yield 2
  yield 3
}
  
const gen = Generator();

Utiliza tres tipos de funciones principalmente:

  1. Siguiente función
  2. función de retorno
  3. Función de lanzamiento

Entonces, aquí discutimos la siguiente función a través del ejemplo.

Ejemplo 1:

Javascript

<script>
    function* Generator() {
        yield 1;
        yield 2;
        yield 3;
    }
  
    const gen = Generator();
    console.log(gen.next());
    console.log(gen.next());
</script>

producción:

Ejemplo 2:

Javascript

<script>
    function* Generator() {
        console.log("before 1");
        yield 1;
        console.log("after 1");
        console.log("before 2");
        yield 2;
        console.log("after 2");
    }
  
    const gen = Generator();
</script>

No imprime nada como cuando el generador llama la primera vez que crea un objeto que tiene la siguiente propiedad porque la siguiente propiedad permite ejecutar de forma individual todo el código dentro del generador.

Ejemplo 3:

Javascript

function* Generator(){
    let i=0;
    while(i<5){
      yield i;
      i++;
    }
  }
     
  const gen = Generator();
  console.log(gen.next());
  console.log(gen.next());
  console.log(gen.next());
  console.log(gen.next());
  console.log(gen.next());
  console.log(gen.next());

producción:

Aquí, el ciclo while se ejecuta solo 5 veces, y después de que finaliza ese ciclo, es por eso que aquí el quinto valor de índice no está definido y la propiedad hecha es verdadera como retorno de rendimiento hasta el valor 5 después de que ese generador no pueda generar valor.

Ejemplo 4:

Javascript

<script>
    function* Generator() {
        let i = 0;
        while (i < 2) {
            yield i++;
        }
    }
  
    const gen = Generator();
    console.log(gen.next().value);
    console.log(gen.next().value);
</script>

producción:

0
1

Aquí solo se devuelve valor.

Ejemplo 5:

Javascript

<script>
    function* Generator(array) {
        for (let i = 0; i < array.length; i++) {
            yield array[i];
        }
    }
  
    const gen = Generator([1, 3, 5]);
    console.log(gen.next());
    console.log(gen.next());
    console.log(gen.next());
    console.log(gen.next());
</script>

producción:

Aquí el uso del generador como iterador para la array.

Ejemplo 6:

Javascript

<script>
    function* Generator() {
        let i = 0;
        while (i < 4) {
            yield i++;
        }
    }
  
    const gen = Generator();
    const gene = Generator();
    console.log(gen.next());
    console.log(gen.next());
    console.log(gene.next());
    console.log(gene.next());
</script>

producción:

Cada vez que se llama a la función del generador, se crea una nueva instancia para el objeto separado que tiene su propia versión de una función que puede iterarse por sí sola.

Publicación traducida automáticamente

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