我的代码有可能会在短时间内连续推迟两个或多个函数。我可以保证每个延迟函数都会按照我创建它们的顺序执行吗?对于我在 iOS 5 和 6 上的 Web 应用程序,我的代码的正确性依赖于按顺序执行的延迟函数。
我正在使用Prototype 的 defer,它是使用 0.01 秒的超时实现的。
“延迟”功能不会立即运行;相反,它会在解释器的调用堆栈为空时立即运行。
从我自己的测试来看,它们似乎是按照我创建它们的顺序执行的。以下确实按顺序打印了从 0 到 99 的所有整数。
测试代码
for (var i = 0; i < 100; i++) {
(function(x) {
return function() {
console.info(x);
}
})(i).defer();
}
输出
0
1
2
...
88
99
然而,这个结果并不是决定性的。我不知道它在更深层次的功能或不同的 CPU 负载下的表现如何。