En JavaScript, Iteradores asíncronos y Generadores asincrónicos Ofrezca la misma funcionalidad que podría implementarse de manera efectiva utilizando las primitivas de lenguaje JavaScript. Entonces, ¿por qué no elegir una solución simple en lugar de ponerse en otra confusión??
Esta publicación discute los iteradores asíncronos frente a los generadores asíncronos en JavaScript junto con ejemplos adecuados. Entonces, comencemos!
Iteradores en JavaScript
En JavaScript, "Iteradores"Se utilizan para acceder a estructuras de datos síncronos, como matrices, mapas y conjuntos. Se basan principalmente en el "próximo()"Método, que comprende dos propiedades:"próximo" y "valor":
Ahora, revisaremos el funcionamiento de los iteradores en JavaScript con la ayuda de un ejemplo.
Ejemplo: Uso de iteradores en JavaScript
Crearemos un "números"Objeto que tiene dos propiedades:"comenzar" y "fin". Entonces, agregaremos un "capacidad de iteración" hacia "números"Objeto utilizando el"Símbolo.iterador ()" método.
El "Símbolo.iterador ()"El método se invocará una vez, al comienzo del"por ... deBucle y devuelve un objeto iterable. Después de realizar esta operación, el "por ... deEl bucle accederá al objeto Iterable y obtendrá los valores en la secuencia de iteración:
Dejar numbe =El mencionado anteriormente, "próximo()"El método se invocará y devolverá el"valor"Como objeto:
para (dejar valor de números)Escriba el código proporcionado en la ventana de la consola y ejecutelo:
Hemos iterado con éxito sobre cada elemento del "númerosObjeto que se puede ver en el siguiente GIF:
Como se mencionó anteriormente, los iteradores de JavaScript regulares pueden ayudarlo a iterar sobre los datos sincrónicos. ¿Qué pasa si los valores vienen de forma asincrónica por cualquier retraso?? En tal escenario, debe implementar el Iteradores asíncronos en JavaScript.
Iteradores asíncronos en JavaScript
Los iteradores asincrónicos están integrados en ES9 para manejar las fuentes de datos asíncronas. Funciona de manera similar al iterador regular, excepto que el "próximo()"El método en un iterador asíncrono devuelve un"Promesa"Eso resuelve el"valor" y "hecho"Valores de propiedades de un objeto.
Convertir iterador regular al iterador asíncrono en JavaScript
Si desea convertir un iterador regular a un iterador asíncrono, siga las instrucciones dadas a continuación:
Ejemplo: iteradores asíncronos en JavaScript
Ahora convertiremos el iterador regular definido en el ejemplo anterior a iteradores asíncronos siguiendo las reglas especificadas.
Para este propósito, reemplazaremos el "Símbolo.Iterador ()" con el "Símbolo.asynciterator ()" método. Luego, agregaremos la palabra clave "asíncrata" antes de "próximo()" método. Usando "esperar" en el "próximo()"El método establecerá el tiempo para cumplir la promesa después"2" segundos:
Dejar numbe =Para la iteración sobre un objeto iterable asincrónico, el "Por esperanza ... deEl bucle se utilizará de la siguiente manera:
(async () =>La salida mostrará los valores iterados en el cuadro de alerta después de un retraso de dos segundos:
En este punto, has entendido el funcionamiento de los iteradores asíncronos. Ahora, avanzaremos y aprenderemos sobre Generadores asincrónicos en JavaScript.
Generadores en JavaScript
Los iteradores en JavaScript son bastante útiles; Sin embargo, necesitan una programación cuidadosa para realizar su funcionalidad esperada. El Función del generador de JavaScript es otra herramienta poderosa que le permite definir un algoritmo iterativo con la ayuda de un solo "no continuo" función.
Inicialmente, una función de generador no ejecuta su código cuando se invoca; En cambio, devuelve un tipo específico de iterador conocido como "Generador". La función del generador se puede invocar tantas veces como sea necesario, y en cada llamada, devuelve un nuevo "Generador,"Lo que se puede iterar una vez.
Para escribir la función del generador, el "función*Se usa la sintaxis. Esta función también comprende un "producir"Operador que detiene la ejecución de la función del generador hasta que se solicite el siguiente valor de un objeto.
Ejemplo: Uso de generadores en JavaScript
Definiremos un "generador"Función que devuelve los valores de un"punto de partida" a "punto final" utilizando el "producir"Operador. El "*"Agregado con el"función"La palabra clave indica que"generador()"Es una función de generador, no una función normal normal.
function* generador (startingpoint, EndingPoint)En el siguiente paso, invocaremos el "generador()"Función que devuelve un generador almacenado en el"X" objeto:
Sea x = generador (1, 5);Por último, para iterar sobre el "X"Generador, usaremos el"por ... de" bucle:
para (const num de x)La ejecución del programa proporcionado mostrará los valores iterados:
Si desea recuperar resultados basados en la promesa del "Generador", Tienes que usar"Generador asíncrono"En el programa JavaScript.
Generadores asincrónicos en JavaScript
Generador asíncrono en JavaScript funciona de manera similar a la función del generador, excepto que el "próximo()"El método en el generador asíncrono devuelve un"Promesa"Eso resuelve el"valor" y "hecho"Valores de propiedades de un objeto.
Convertir la función del generador en iterador asíncrono en JavaScript
Siga las instrucciones dadas a continuación para convertir una función de generador en un iterador asíncrono en JavaScript:
Ahora, le mostraremos el procedimiento práctico para convertir una función de generador en generadores asíncronos en JavaScript.
Ejemplo: Generadores asíncronos en JavaScript
En primer lugar, agregaremos el "asíncrata"Palabra clave antes de definir el"AsyncSequence ()"Función asíncrona. El asyncSequence () produce un "Promesa"Que se cumplirá en un segundo:
asyncfunction* asyncSequence (startingpoint, EndingPoint)Por último, "Por esperanza ... deEl bucle se usa para iterar y devolver el generador asincrónico:
(async () =>Este programa JavaScript devolverá los valores de "1" a "5"Mientras tomaba una brecha de"uno" segundo:
Hemos proporcionado la información esencial relacionada con Iteradores asíncronos y Generadores asincrónicos. Sin embargo, ambos se pueden usar para iterar sobre datos asincrónicos en JavaScript; Puede ser un desafío para los principiantes mantener la lógica o la definición interna de los iteradores asíncronos, mientras que los generadores asíncronos ofrecen más eficiente y menos propenso a errores forma de utilizar iteradores. También esconde el complejidad del iterador y hace que el código sea conciso y legible.
Entonces, te recomendamos Use generadores asincrónicos para manejar iteraciones relacionadas con la recopilación de datos asincrónicos.
Conclusión
Iterador asíncronoarena Generadores asincrónicos se utilizan para iterar sobre los datos, proporcionados después de una cierta cantidad de tiempo. Los iteradores asíncronos ejecutan el "Símbolo.asynciterator ()"Método para devolver un"iterador", Mientras que los generadores asincrónicos devuelven un tipo especial de iterador"Generador"Por sí mismo, que se puede usar donde sea que se requiera la iteración. Este artículo discutió iteradores asíncronos y generadores asincrónicos en JavaScript.