正如你所看到的一种阻塞函数,例如alert()
产生其输出不按顺序Google Chrome 事件队列的填充时间为setTimeout()
函数,基于此代码:
for (var i = 1; i <= 6; i++) {
(function(index){
setTimeout(function() { alert(index) }, 100);
})(i);
}
对此应该有一个解释。
一般来说,期望在任何给定的情况下都是有道理的moment(比如说,以毫秒精度),只有一个执行槽,并且任何事件(例如setTimeout
回调)应该发生在那个时候moment应该全部在一个队列中。这似乎是OP的期望。
然而,没有什么要求浏览器以这种方式工作,而且安排事情的实际情况要复杂得多,而且也因浏览器而异。
因此,最好的选择是永远不要依赖任何两个事件的相对顺序,无论您认为它们应该有多么可预测。
我在这里有一篇存档的博客文章,介绍了计时器的特殊性质以及我对它们的(类似)挫败感:https://web.archive.org/web/20151029223348/http://blog.getify.com/on-the-nature-of-timers https://web.archive.org/web/20151029223348/http://blog.getify.com/on-the-nature-of-timers
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)