Как цикл обработки событий 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. Но это не так. Зачем?

0 ответов

Другие вопросы по тегам