mientras ejecuto este código obtengo una salida de
1 3 2mi salida prevista es
1 2 3 const test = [1, 2, 3] test.forEach(async (i) => { if (i === 2) { await new Promise(resolve => setTimeout(resolve, 3000)); } console.log(i); })¿Cómo hago que la declaración de impresión espere 3 segundos si i === 2 si puede explicar también :)
No puede usar .forEach para ejecutar secuencialmente porque se ignora la Promesa devuelta a la función forEach . Tienes que usar for...of loop.
Aquí hay un ejemplo:
const test = [1, 2, 3]; (async function () { for (let i of test) { if (i === 2) { await new Promise(resolve => setTimeout(resolve, 3000)); } console.log(i) } }());