Según el siguiente código, el tiempo de espera no funciona correctamente para resolver este problema.
for (let i = 0; i < 4; i++) { if (socket.isConnected() == true) { connectCall([]); break; } else { setTimeout(() => { console.log("Call-1:"); }, 1000); } }Aquí SetTimeout no funciona correctamente cada vez que se mantiene durante algún tiempo. mi preocupación es que cuando la condición es un bucle de interrupción de coincidencia y no coincide, entonces manténgalo presionado durante algún tiempo. Si hay otra forma de hacerlo, envíeme la solución adecuada. si se hace desde el bucle while o cualquier otro bucle, también se acepta.
setTimeout funciona correctamente, retrasa la ejecución de console.log durante 1 segundo, pero esto sucede de forma asíncrona.
Como puede ver en este ejemplo, todos los registros ocurren directamente después de 1 segundo:
for(let i = 0; i < 4; i++) { setTimeout(() => { console.log(i); }, 1000); } Si desea "dormir" durante un segundo en su ciclo, debe esperar el setTimout .
Puedes hacer esto con una Promise , por ejemplo:
(async () => { const socket = { isConnected: () => false } for (let i = 0; i < 4; i++) { if (socket.isConnected()) { connectCall([]); break; } else { await new Promise(res => { setTimeout(() => { console.log(`Call-${i}:`); res(); }, 1000); }); } } })();