如何用setTimeout去实现setInterval
setTimeout:
用于在指定的毫秒数后调用函数或计算表达式,**只执行一次**
//例:
setTimeout(function(){
//do something
},interval)
setInterval:
按照指定的周期(以毫秒计)来调用函数或计算表达式,**会不停地执行,直到 clearInterval() 被调用或窗口被关闭**
//例:
var intervalId = setInterval(function(){
do something
if(something has finished){
//清除计时器
clearInterval(intervalId);
}
}
},interval)
模拟setInterval
1、为什么要求模拟 setInterval?
JavaScript是运行在单线程机制中的,当我们使用 setInterval 去完成一段代码,而这段代码的执行时间会超过你所设定的函数执行时间间隔interval时,这可能会导致多个定时器的代码执行时间可能会比预期小又或者某些执行间隔会被跳过。
2、如何用 setTimeout 模拟?
setTimeout(function(){
do something
if(something has not finished){
setTimeout(arguments.callee,interval);
}
},interval)