Tengo dos for loop , dentro de ellos tengo la función setTimeout como el siguiente código:
for(let i=0;i<3;i++){ setTimeout(()=>{console.log(i)}, 1000) } for(let i=0;i<3;i++){ setTimeout(()=>{console.log(i)}, 1000) }quiero que el segundo ciclo no se ejecute hasta después de que termine el primer ciclo,
I want this result: 0 1 2 0 1 2 - and between 2 numbers wait 1 second.¿como puedo hacer eso?
Todavía no puedo comentar o haría preguntas aclaratorias, así que te daré lo que creo que estás pidiendo. Si desea un retraso de 1 segundo entre cada número que se registra en la consola, esto funcionará:
const func = async () => { for (let i = 0; i < 3; i++) { await new Promise((resolve) => setTimeout(() => { console.log(i); resolve(); }, 1000) ); } for (let i = 0; i < 3; i++) { await new Promise((resolve) => setTimeout(() => { console.log(i); resolve(); }, 1000) ); } }; func(); Un resumen rápido de lo que está pasando aquí. Creé una función externa llamada func que hice asincrónica para poder usar la palabra clave await dentro de ella. Luego puse la llamada setTimeout dentro de una nueva instancia de Promise. La promesa combinada con la espera significa que javascript esencialmente se detendrá en esa línea hasta que se resuelvan las llamadas de Promesa. Una vez que se llama a resolve, esa instancia de Promise finaliza y la declaración de espera deja de "bloquear" javascript y la devolución de llamada continúa. TLDR:
setTimeout asegura que esperaremos hasta que finalice cada tiempo de espera ANTES de que comience el siguiente tiempo de espera.Creo que estás tratando de hacer una especie de contador
Prueba algo como esto:
for(let i=1;i<=3;i++){ setTimeout(()=>{ console.log(i)}, i*1000 ) }Déjame saber si esto resuelve tu problema
esto funcionará
nxt (0, 0);//seed the stack function nxt(num, itertn){ if(num == 3){//want till 2 if(itertn == 0){// first or 2nd iteration num =0; itertn++; }else{ return;//after 2nd stop } } console.log(num);//the work num++; setTimeout(nxt, 1000, num, itertn);//next after a second }Pero hay otras formas de hacer esto.