En el pseudocódigo a continuación, cuando el bucle for ejecuta cada iteración, entonces el bucle for se bloqueará en cada iteración esperando la respuesta de la fetch asíncrona (¿porque await se usa dentro de myasyncfn ? ¿O necesito usar la palabra clave await como se muestra en el comentario de abajo?
async myasyncfn(url){ return await fetch(url..).response; } for each url in url_array: myasyncfn(url); #await myasyncfn(url)No esperará a que se complete la función async antes de continuar con el ciclo; en ese sentido , bloqueará. Sin embargo, eso solo significa que itera a través de todas las URL en rápida sucesión, activando muchas solicitudes de fetch , que luego se ejecutarán en segundo plano en paralelo. Una vez que el ciclo termina de dispararlos, su hilo se desbloquea.
Para ilustrar:
async function foo(i) { await new Promise(resolve => setTimeout(resolve, 5000)); console.log('Completed', i); } for (let i = 0; i < 10; i++) { foo(i); console.log('Fired', i); } console.log('Done firing all async functions, unblocking...');