Es bueno entender que async/await hace parecer al proceso síncrono, por lo que algunos beneficios de la concurrencia se pueden perder.
Como decia tio Ben:
Todo poder conlleva una responsabilidad
Aquí dejo un ejemplo:
const print = (msg) => {
console.log(msg);
return msg;
}
const future_message = () => {
returnnew Promise((resolve, reject) =>
setTimeout(() => resolve(print("Genesys is Skynet")), 3000));
}
async function main(){
const msg = await future_message()
console.log("Hello to the program!")
console.log("msg: ", msg)
}
main()
El programa imprimirá
Genesys is Skynet
Hello to the program!
msg: Genesys is Skynet
Si usamos then en lugar de await
const print = (msg) => {
console.log(msg);
return msg;
}
const future_message = () => {
returnnew Promise((resolve, reject) =>
setTimeout(() => resolve(print(“Genesys is Skynet”)), 3000));
}
function main(){
future_message().then((msg) =>console.log("msg: ", msg));
console.log(“Hello to the program!”)
}
main()
la salida será:
Hello to the program!
Genesys is Skynet
msg: Genesys is Skynet```
Entendiendo la naturaleza del programa podemos combinar los dos métodos de la mejor manera
Me parece muy interesante la manera en la que usaste .then, pero me embarga una inquietud…
Si hago uso de la sequencialidad y cambio de ubicación el console.log(“Hello to the program!”) y la pongo antes del llamado a la función future_message funciona exactamente igual que tu solución.
No sé si exista un problema si se usa en un código más robusto.
Aun así me gusta más tu solución.