【发布时间】:2016-01-06 12:33:32
【问题描述】:
如果同时注册了多个回调,是否保证第一个被调用的回调是延迟最少的?
考虑以下代码:
function foo(i) {
setTimeout(function () {
console.log(i);
}, i);
}
for (var i = 0; i < 1000; i++) {
foo(i);
}
这段代码是否保证按顺序输出1-1000?
请注意:这个问题不是关于使用相等延迟。已经确定,具有相同延迟的多个 setTimeout() 调用不保证按顺序执行。
【问题讨论】:
-
是的,当延迟以这种方式增加时,可以保证回调将按顺序触发,但不能保证计时器准确。
-
能否请教一下“多个具有相同延迟的 setTimeout() 调用不能保证按顺序执行”?因为这至少看起来与 HTML 规范相冲突。请参阅stackoverflow.com/a/53244931/2160440 虽然不确定服务器端的实现。
标签: javascript settimeout