Что выведет код Junior Event loop и libuv спрашивают часто обновлено
Что выведет: nextTick, промис, таймер, immediate
Вопрос
Напиши вывод CommonJS-скрипта в Node.js 22, по строке на вызов console.log.
const fs = require('node:fs');
console.log('start');
fs.readFile(__filename, () => {
setTimeout(() => console.log('timeout'), 0);
setImmediate(() => console.log('immediate'));
process.nextTick(() => console.log('tick'));
});
Promise.resolve().then(() => console.log('promise'));
console.log('end');
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: start, end, promise, tick, immediate, timeout. Синхронно: start, end.
Что выведет
start
end
promise
tick
immediate
timeout
Разбор
Синхронно: start, end. Затем микрозадачи: promise. Когда файл прочитан, в фазе poll выполняется колбэк readFile: он ставит таймер, immediate и nextTick. Сразу после колбэка опустошается очередь nextTick: tick. Следующая фаза check: immediate. Таймер ждёт следующего оборота: timeout.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «Event loop и libuv»
- Тяжёлый цикл без блокировки event loop
- Код-ревью: что блокирует event loop
- Что блокирует event loop
- Объясни event loop в Node.js
- setImmediate и setTimeout внутри I/O
- setTimeout(0) против setImmediate на верхнем уровне
- Что такое libuv
- Рекурсивный process.nextTick