以下是一些使用setTimeout
的简单Javascript代码:
function setTimeouts() {
setTimeout(function() { console.log(2); }, 2);
setTimeout(function() { console.log(1); }, 1);
setTimeout(function() { console.log(0); }, 0);
}
for (var i = 0; i < 10; i++) {
setTimeouts();
}
当我在Chrome或Node.js上运行时,结果类似:
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
2
2
2
2
2
2
2
2
2
2
您可以在超时0
之前看到超时1
和2
的所有任务,这正是我所期望的。
但是0
和1
相互混合,似乎它们具有相同的超时。我期望的是0
之前的所有1
。
如何理解这一点?
答案 0 :(得分:0)
实际上,setTimeout的第二个参数具有最小值限制。对于firefox,值为4ms。如果传递的值小于最小值,则使用minimum。
关于您的问题,我认为这篇文章很有用:http://javascript.info/tutorial/events-and-timing-depth