Traté de llamar a una llamada retrasada "uno" o "uno o dos". pregunta, pero en cambio, la función comenzó a ejecutarse indefinidamente, aunque sin setInterval todo funcionó bien.
quester2() function quester2() { for (i = 0; i <= finalCount; i++) { let K = Math.ceil(Math.random() * 2); if (K == 1) { setInterval(function () { console.log("one"); }, 1000); finalCount += 1; allIterations += 1; setInterval(function () { console.log("one or two?"); }, 1000); } else { setInterval(function () { console.log("one or two?"); }, 1000); allIterations += 1; } } console.log(finalCount); console.log(i); }No hay un ciclo infinito, su código puede tomar aleatoriamente más iteraciones en comparación con las ejecuciones anteriores. A veces aumenta finalCount que está involucrado en la condición del ciclo for .
Lo que puede parecer un bucle infinito es el hecho de que ejecuta muchos setIntervals y nunca los borra. Pero si revisa cuidadosamente su consola, básicamente, inmediatamente después de invocar la función, verá dos salidas para las dos últimas declaraciones de registro. Un segundo después empiezas a ver un número infinito de "uno" y "¿uno o dos?".
quester2()0
1
¿uno o dos?