Esto es lo que probé -
async func1(){ // do asynchronous calls with await console.log("call finished"); } func2(){ func1(); // without await console.log("func2 finished"); return; } func2(); La salida fue func2 finished call finished . Entonces, incluso después de que la función principal completó la ejecución, la función asíncrona aún completó lo que estaba destinado.
¿Funcionará esto en el caso de una API en la que devolvamos algo a un servicio externo? Como funciones en la nube -
async func1(){ // do asynchronous calls - post db using await console.log("call finished"); } func2(){ func1(); // without await return response.status(200).send(""); } func2(); ¿Se completará la llamada a la base de datos incluso si el envío de response.send se ejecuta primero, siempre que no await a que la primera función termine de ejecutarse?
Sí, la Promesa devuelta por una función asíncrona es solo un identificador que le permite encadenar la lógica en el valor asíncrono o el tiempo proporcionado por la función. No tienes que hacer nada con eso. Si no usa .then o await para encadenarlo, la función asíncrona aún se ejecuta y revisa todo su código; es solo que la Promesa que devuelve no se usa en ningún otro lugar.
Dicho esto, las promesas colgantes suelen ser una mala idea ; en la mayoría de los casos, probablemente deberías encadenar un .then o .catch en una promesa.