Google Chrome在alert()功能上的不可预知的行为

正如你所看到的,像alert()这样的阻塞类型的函数在通过setTimeout()函数填充Google Chrome的事件队列时根据此代码生成其输出的顺序不正确

for (var i = 1; i <= 6; i++) {

 (function(index){ 

     setTimeout(function() { alert(index) }, 100);

 })(i);

}
  • 这是为什么?
  • 它是否被视为Google Chrome的错误?
  • 应该有一个解释。


    一般来说,期望在任何特定时刻(比如说,以毫秒为精度)只有一个执行时隙,并且在那一刻应该发生的任何事件(如setTimeout回调)应该都在单个队列中。 这似乎是OP的期望。

    然而,没有什么东西需要浏览器以这种方式工作,并且事情如何进行计划的现实要复杂得多,并且也因浏览器而异。

    所以,最好的办法是不要依赖任何两个事件的相对顺序,不管你认为他们应该有多可预测。

    我在这里有一篇关于定时器特有性质的博客文章,以及我对他们的类似挫折:https://web.archive.org/web/20151029223348/http://blog.getify.com/on-the-自然的老前辈

    链接地址: http://www.djcxy.com/p/51923.html

    上一篇: Google Chrome's unpredictable behaviour on alert() function

    下一篇: Added Sentry debugging, getting long string as undefined