下面是使用setTimeout
一些簡單的Javascript代碼:`setTimeout(func,0)`和`setTimeout(func,1)`是否一樣?
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();
}
當我在瀏覽器或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
是相互混合,似乎他們有相同的超時時間。我期望的是在1
之前的所有0
。
如何理解?
這是NodeJS還是Google Chrome?兩者都有不同的定時器實現,這些定時器實現在不同的地方以及在其他地方都有所指定 –
@Freewind:你爲什麼在'1'之前期望'0'的具體原因? –
@Freewind:這是一個關於節點中的事件循環的精彩演講,可以回答你的問題.https://www.youtube.com/watch?v = 8aGhZQkoFbQ –