Tengo la siguiente duda, estaba practicando sobre funciones asíncronas/en espera. He creado una prueba simple:
console.log('Testing async-await'); main(); async function wait(nSeconds) { await setTimeout(function() { console.log('Request finished !!'); }, nSeconds * 1000); } async function main() { let a = await wait(5); console.log('end !!'); } Mi idea, siempre que entiendo, es simular con la función de wait(nSecond) una espera como una solicitud ajax, por ejemplo. Todo se llama en la función main() .
Mi salida real es:
Pero... no debería ser??? :
Testing async-await Request finished !! end !! Le digo a mi código, when you get on line 'let a = await wait(5);' just dont continue until end of function is resolved . Entonces, Que esta pasando aquí.
La función wait debería verse así:
function wait(nSeconds){ return new Promise( resolve => setTimeout( resolve, nSeconds * 1000 ) ) }El método setTimeout no devuelve la promesa, por lo que la palabra clave await no funciona en este caso.