Я очень смущен различиями между nextTick и setImmediate. Я прочитал всю документацию о них в Интернете, но я до сих пор не понимаю, как они работают.
Примеры:
function log(n) { console.log(n); }
setImmediate
setImmediate(function() {
setImmediate(function() {
log(1);
setImmediate(function() { log(2); });
setImmediate(function() { log(3); });
});
setImmediate(function() {
log(4);
setImmediate(function() { log(5); });
setImmediate(function() { log(6); });
});
});
//1 2 3 4 5 6
nextTick
process.nextTick(function() {
process.nextTick(function() {
log(1);
process.nextTick(function() { log(2); });
process.nextTick(function() { log(3); });
});
process.nextTick(function() {
log(4);
process.nextTick(function() { log(5); });
process.nextTick(function() { log(6); });
});
});
//1 4 2 3 5 6
Почему эти результаты? Пожалуйста, объясните с помощью визуального или очень простого объяснения. Даже разработчики node не согласны с тем, как nextTick и setImmediate должны быть поняты людьми.
Источники: