JavaScript setTimeout或setInterval?
据我所知,这两段JavaScript的行为方式相同:
function myTimeoutFunction(){
doStuff();
setTimeout(myTimeoutFunction, 1000);
}
myTimeoutFunction();
function myTimeoutFunction(){
doStuff();
}
myTimeoutFunction();
setInterval(myTimeoutFunction, 1000);
使用setTimeout和setInterval之间有什么区别?
回答:
他们本质上试图做同样的事情,但是这种setInterval
方法比该setTimeout
方法更加准确,因为要setTimeout
等待1000ms,然后运行该函数,然后设置另一个超时。因此,等待时间实际上超过了1000毫秒(如果函数执行时间较长,则等待时间会更长)。
尽管有人可能会认为setInterval
将执行完全相同每1000毫秒,这是需要注意的重要setInterval
也将推迟,因为JavaScript
是不是多线程的语言,这意味着-如果有运行脚本的其他部分-区间将有等待完成。
在此Fiddle中,你可以清楚地看到超时将落在后面,而间隔几乎总是以近1个呼叫/秒的速度(脚本正在尝试执行)。如果将顶部的速度变量更改为类似20的小值(这意味着它将尝试每秒运行50次),则该间隔将永远不会达到平均每秒50次迭代。
延迟几乎总是可以忽略不计,但是如果你要编写非常精确的内容,则应该使用自调整计时器(本质上是基于超时的计时器,它会根据所创建的延迟不断进行自我调整)
以上是 JavaScript setTimeout或setInterval? 的全部内容, 来源链接: utcz.com/qa/420771.html