¿Hay alguna diferencia entre:
const [result1, result2] = await Promise.all([task1(), task2()]);y
const t1 = task1(); const t2 = task2(); const result1 = await t1; const result2 = await t2;y
const [t1, t2] = [task1(), task2()]; const [result1, result2] = [await t1, await t2];Generalmente, usar Promise.all() ejecuta solicitudes "asincrónicas" en paralelo. El uso de await puede ejecutarse en paralelo O ser un bloqueo de "sincronización".
Las funciones test1 y test2 a continuación muestran cómo await puede ejecutarse de forma asíncrona o sincronizada.
test3 muestra Promise.all() que es asíncrono.
jsfiddle con resultados cronometrados : abra la consola del navegador para ver los resultados de la prueba
Comportamiento de sincronización . NO se ejecuta en paralelo, tarda ~ 1800 ms :
const test1 = async () => { const delay1 = await Promise.delay(600); //runs 1st const delay2 = await Promise.delay(600); //waits 600 for delay1 to run const delay3 = await Promise.delay(600); //waits 600 more for delay2 to run };Comportamiento asíncrono . Se ejecuta en paralelo, tarda ~ 600 ms :
const test2 = async () => { const delay1 = Promise.delay(600); const delay2 = Promise.delay(600); const delay3 = Promise.delay(600); const data1 = await delay1; const data2 = await delay2; const data3 = await delay3; //runs all delays simultaneously }Comportamiento asíncrono . Se ejecuta en paralelo, tarda ~ 600 ms :
const test3 = async () => { await Promise.all([ Promise.delay(600), Promise.delay(600), Promise.delay(600)]); //runs all delays simultaneously }; TLDR; Si está utilizando Promise.all() , también "fallará rápidamente": dejará de ejecutarse en el momento de la primera falla de cualquiera de las funciones incluidas.