Выбор ответа Junior Event loop и libuv спрашивают часто обновлено
Что блокирует event loop
Вопрос
Какой код в обработчике HTTP-запроса заблокирует event loop и задержит ответы всем клиентам?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: crypto.pbkdf2Sync(pass, salt, 600000, 64, "sha512"). Синхронная pbkdf2Sync выполняет тяжёлое вычисление прямо в главном потоке.
Варианты ответа
await fs.promises.readFile(path)большого файлаawait fetch(url)к медленному APIsetTimeout(next, 1000)на каждый запросcrypto.pbkdf2Sync(pass, salt, 600000, 64, "sha512")правильный ответ
Разбор
Синхронная pbkdf2Sync выполняет тяжёлое вычисление прямо в главном потоке. Пока она считает, ни один другой запрос не обрабатывается.
fs.promises.readFileработает в пуле потоков, главный поток свободен.fetchасинхронный сетевой вызов.setTimeoutтолько регистрирует таймер.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «Event loop и libuv»
- Тяжёлый цикл без блокировки event loop
- setImmediate и setTimeout внутри I/O
- setTimeout(0) против setImmediate на верхнем уровне
- Что такое libuv
- Рекурсивный process.nextTick
- process.nextTick и setImmediate
- Event loop Node и браузера: в чём разница
- Порядок nextTick, промиса и setTimeout