博文地址setTimeout和setIntervalsetTimeout和setInterval是我们在javaScript中经常使用的定时器,setTimeout方法用于在指定的毫秒数后调用一个函数或者计算一个表达式,setInterval可以根据指定的周期连续调用一个函数或者计算一个表达式。但是当我们想循环调用某个任务的时候,我们可以使用setInterval来指定周期,也可以使用函数中嵌套的setTimeout来返回给我们自己,可以看下面这段代码//AfunctionmyTimeout(){doStuff()setTimeout(myTimeout,1000)}myTimeout()//BfunctionmyTimeout(){doStuff()}myTimeout()setInterval(myTimeout,1000)上面方法A和B都是循环执行myTimeout函数,但是有是一个有什么区别。我们大多数人都知道,它实际上取决于doStuff所消耗的时间。如下图所示,如果doStuff消耗的时间很短(实际中大部分消耗的时间很短,很难检测到),当doStuff是一个非常复杂的计算时,两种方法的效果差不多耗时较长,我们可以分析方法A(通过setTimeout恢复)可以保证每次任务结束到下一个任务开始的时间间隔是我们的期望值,但是B(setInterval)却可以保证任务开始到下一个任务开始的间隔就是我们的期望值,(当然,如果doStuff执行时间比我们期望的间隔长,setInterval可能会直接放弃某个任务。在这种极少数情况下,我们暂时不考虑)为了感受差异,这里有一个模拟任务执行的函数functionwait(time){varstart=Date.now()while(Date.now()-start