Javascript setInterval – 率还是延迟?

Javascript setInterval方法是否等待(至少)特定代码的两次执行之间的指定时间间隔,还是在完成上一次执行和下一次执行开始之间等待该时间间隔?

(或者,当与Java的ScheduledExecutorService方法进行比较时 – setInterval类似于scheduleAtFixedRate()或者更确切地说是scheduleWithFixedDelay()?)

解决方法:

如果以1000毫秒的间隔调用setInterval并且回调代码需要100毫秒才能运行,则下一个回调将在900毫秒后执行.

如果回调需要1050毫秒,则下一个回调将在第一个完成后立即启动(延迟50毫秒).这种延迟将不断积累.

因此在Java世界中,这类似于scheduleAtFixedRate().如果您需要scheduleWithFixedDelay()行为,则必须在每次完成时使用setTimeout()并重新调度回调:

function callback() {
    //long running code
    setTimeout(callback, 1000);
}
setTimeout(callback, 1000);

无论运行多长时间,上面的代码将在callback()完成之后等待1000毫秒,然后再次启动它.

上一篇:在javascript中关闭setInterval函数


下一篇:javascript – &符号(&)变成&