使用 setTimeout 实现 setInterval
1,定义函数,传入回调函数和时间,定义控制器t的属性b=true
2,定义递归函数,只有属性b=true的时候才执行回调函数,并且启动setTimeout继续调用本递归函数
3,启动定时器,触发递归函数,返回控制器
function mySetInterval(fn, timeout) {
var t={flag:true}
//递归
function dd(){
if(t.flag){
fn()
setTimeout(dd,timeout)
}
}
//触发
setTimeout(dd,timeout)
return t
}
let i=0
let t=mySetInterval(function(){
console.log(i++)
},500)
setTimeout(()=>{
t.flag=false
},2000)
共有 0 条评论