如何在固定时间后停止嵌套的setTimeout调用



我有一段代码:

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);

最新更新