Как цикл обработки событий Node.js обрабатывает эти два фрагмента кода?
Я пытаюсь понять официальное объяснение Nodejs о Event Loop. Они объяснили пример фазы таймеров, но я не могу сопоставить их с их объяснениями о setTimeout и setImmediate.
Не могли бы вы подробно объяснить все этапы / процессы / проверки, которые выполняет цикл событий для следующих фрагментов кода?
Код 1:
setTimeout(() => {
console.log('timeout');
}, 0);
setImmediate(() => {
console.log('immediate');
});
Код 2:
const fs = require('fs');
fs.readFile(__filename, () => {
setTimeout(() => {
console.log('timeout');
}, 0);
setImmediate(() => {
console.log('immediate');
});
});
PS1: В комментариях Марк попросил меня объяснить, какая часть сбивает с толку. Ну вот:
Ниже приводится краткое изложение их объяснения для их первого примера: "Когда цикл обработки событий входит в фазу опроса, у него есть пустая очередь (fs.readFile() не завершена), поэтому он будет ждать оставшееся количество мс до самой быстрой порог таймера достигнут... затем возвращается к фазе таймеров и запускает обратные вызовы "
Итак, я понимаю, что, соответственно, для кода 1 это должно быть следующим: фаза опроса имеет пустую очередь, и порог времени достигнут. Итак, сначала должен запуститься setTimeout. Затем собираемся проверить фазу и установить setImmediate. Но это не так. Зачем?