Tengo este fragmento de código:
let timerId = setTimeout(function tick() { alert("tick"); setTimeout(tick(), 1000); }, 1000);Esto crea un bucle infinito que no termina. ¿Cómo puedo detener este setTimeout después de suponer 10000 ms o 10 s?
Una solución es empujar el tiempo de timeout a la matriz cada vez que lo crea y recorrer la matriz para borrarlo.
let arr = [] let timerId = setTimeout(function tick() { console.log("tick"); arr.push(setTimeout(tick(), 1000)); }, 1000); setTimeout(function(){ arr.forEach(i=>{ window.clearTimeout(i) })) },10000) Pero, siempre es estable usar setInterval() :
let arr = [] setInterval(function tick() { console.log("tick"); }, 1000);