我有一段代码:
let timerId = setTimeout(function tick() {
alert("tick");
setTimeout(tick(), 1000);
}, 1000);
这会创建一个没有结束的无限循环。假设10000毫秒或10秒后,我如何停止此setTimeout?
解决方案是在每次创建timeout
时将其推送到数组,并在数组上循环以清除它。
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)
但是,使用setInterval()
:总是稳定的
let arr = []
setInterval(function tick() {
console.log("tick");
}, 1000);