let arr = [1, 2, 3, 4]
let loopTimer//外层定时
let Timer=[]//内层延迟
function setTimeOut (arr,endTimeout) {
let tempArr=[]
for (let i = 0; i < arr.length; i++) {
tempArr.push(setTimeout(() => {
// fn(i,arr)
console.log(arr[i])
}, 2000 * i))
}
Timer=tempArr
}
function setInterVal (fn, arr) {
fn(arr)
loopTimer = setInterval(() => { fn(arr) }, arr.length * 2000)
}
setInterVal(setTimeOut,arr)
clearInterval(loopTimer)
Timer.forEach((item)=>{
clearTimeout(item)
})
如何清除setTimeOut里面的输出
你那
arr
里有 4 个元素,循环里Timer
被赋了 4 遍值,可你最后只clearTimeout
掉最后一次赋值的那个了,前 3 个你也没存起来啊?