Выбор ответа Junior Event loop и libuv спрашивают часто обновлено

Что блокирует event loop

Вопрос

Какой код в обработчике HTTP-запроса заблокирует event loop и задержит ответы всем клиентам?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: crypto.pbkdf2Sync(pass, salt, 600000, 64, "sha512"). Синхронная pbkdf2Sync выполняет тяжёлое вычисление прямо в главном потоке.

Варианты ответа

  1. await fs.promises.readFile(path) большого файла
  2. await fetch(url) к медленному API
  3. setTimeout(next, 1000) на каждый запрос
  4. crypto.pbkdf2Sync(pass, salt, 600000, 64, "sha512")правильный ответ

Разбор

Синхронная pbkdf2Sync выполняет тяжёлое вычисление прямо в главном потоке. Пока она считает, ни один другой запрос не обрабатывается.

  • fs.promises.readFile работает в пуле потоков, главный поток свободен.
  • fetch асинхронный сетевой вызов.
  • setTimeout только регистрирует таймер.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме