Estoy tratando de aprender async/await y las promesas y no puedo ejecutar varias funciones asíncronas en serie.
function firstFunction () { return new Promise((resolve, reject) => { setTimeout(() => console.log('first'), 2000) resolve() }) } function secondFunction () { return new Promise((resolve, reject) => { setTimeout(() => console.log('second'), 1000) resolve() }) } async function main() { await firstFunction() await secondFunction() } main()La salida que obtengo es
second firstDado que hay una espera para firstFunction(), esperaría que la promesa de firstFunction() termine antes de pasar a secondFunction().
¿Alguien puede señalar por qué se ejecutaron en paralelo y cómo hacer que se ejecuten uno tras otro? (se ejecutó en el nodo v18.3.0)
Debe mover su llamada resolve( ) dentro de la función setTimeout() . Aquí está el código fijo:
function firstFunction () { return new Promise((resolve, reject) => { setTimeout(() => { console.log('first'); resolve(); }, 2000); }); } function secondFunction () { return new Promise((resolve, reject) => { setTimeout(() => { console.log('second'); resolve(); }, 1000); }) } async function main() { await firstFunction() await secondFunction() } main()