`setTimeout(func,0)`和`setTimeout(func,1)`被认为是一样的吗?

时间:2016-06-22 07:13:01

标签: javascript node.js google-chrome settimeout

以下是一些使用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之前看到超时12的所有任务,这正是我所期望的。

但是01相互混合,似乎它们具有相同的超时。我期望的是0之前的所有1

如何理解这一点?

1 个答案:

答案 0 :(得分:0)

实际上,setTimeout的第二个参数具有最小值限制。对于firefox,值为4ms。如果传递的值小于最小值,则使用minimum。

关于您的问题,我认为这篇文章很有用:http://javascript.info/tutorial/events-and-timing-depth