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

回到顶部