NodeJS es compatible con async/await de fábrica desde la versión 7.6. Creo que ha sido la mayor adición individual a JS desde 2017. Si aún no lo ha probado, aquí hay un montón de razones con ejemplos de por qué debería adoptarlo de inmediato y nunca mirar hacia atrás.
Companies Mentioned
NodeJS es compatible con async/await de fábrica desde la versión 7.6. Creo que ha sido la mayor adición individual a JS desde 2017. Si aún no lo ha probado, aquí hay un montón de razones con ejemplos por los que debería adoptarlo de inmediato y nunca mirar hacia atrás. [ACTUALIZAR]: Este artículo ha sido editado para ser más relevante en 2019
Asíncrono/Espera 101
Para aquellos que nunca han oído hablar de este tema antes, aquí hay una introducción rápida
Async/await es una nueva forma de escribir código asíncrono. Las alternativas anteriores para el código asíncrono son las devoluciones de llamada y las promesas.
Async/await es en realidad solo azúcar de sintaxis construida sobre promesas. No se puede usar con devoluciones de llamada simples o devoluciones de llamada de nodo.
Async/await es, como las promesas, sin bloqueo.
Async/await hace que el código asíncrono se vea y se comporte un poco más como el código síncrono. Aquí es donde reside todo su poder.
Sintaxis
Asumiendo una función getJSON que devuelve una promesa, y esa promesa se resuelve con algún objeto JSON. Solo queremos llamarlo y registrar ese JSON, luego devolver "done" .
Así es como lo implementarías usando promesas
2. Si establece un punto de interrupción dentro de un bloque .then y usa accesos directos de depuración como step-over, el depurador no se moverá al siguiente .then porque solo "pasos" a través del código síncrono.
Con async/await no necesita tanto las funciones de flecha, y puede recorrer las llamadas en espera exactamente como si fueran llamadas sincrónicas normales.
En conclusión
Async/await es una de las características más revolucionarias que se han agregado a JavaScript en los últimos años. Te hace darte cuenta de lo que promete un lío sintáctico y proporciona un reemplazo intuitivo.
Preocupaciones
Un cierto escepticismo válido que podría tener sobre el uso de esta función es que hace que el código asíncrono sea menos obvio: nuestros ojos aprendieron a detectar el código asíncrono cada vez que vemos una devolución de llamada o un .then , sus ojos tardarán algunas semanas en adaptarse al nuevo signos, pero C# tuvo esta característica durante años y las personas que están familiarizadas con ella saben que vale la pena este pequeño inconveniente temporal.