Oto niektóre proste kodu JavaScript za pomocą setTimeout
:Czy "setTimeout (func, 0)" i "setTimeout (func, 1)" są uważane za takie same?
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();
}
Kiedy uruchamiam go na Chrome lub node.js, wyniki są podobne:
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
Można zobaczyć wszystkie zadania z limitem czasu 0
i 1
są przed upływem limitu czasu 2
, czego się spodziewałem.
Ale 0
i 1
są zmieszane ze sobą, wydaje się, że mają ten sam limit czasu. Wszystko, czego się spodziewałem, to 0
przed.
Jak to zrozumieć?
Czy ta NodeJS lub Google Chrome? Oba mają różne implementacje timera, które są określone inaczej iw innych miejscach. –
@Freewind: Jakieś konkretne powody, dla których oczekiwałeś '0' przed' 1'? –
@Freewind: To jest wspaniała rozmowa na temat pętli zdarzeń w węźle, która może odpowiedzieć na twoje pytanie..https: //www.youtube.com/watch? V = 8aGhZQkoFbQ –