Реализуйте неблокирующую функцию sleep, принимающую задержку в миллисекундах.

Неблокирующий sleep возвращает Promise и завершает его через setTimeout. Пока вызывающий код ожидает Promise, event loop может выполнять другую работу.

Короткий ответ

Что ответить на собеседовании

Неблокирующий sleep возвращает Promise и завершает его через setTimeout. Пока вызывающий код ожидает Promise, event loop может выполнять другую работу.

Подробный разбор

Ответ с пояснениями

Неблокирующий sleep возвращает Promise и завершает его через setTimeout. Пока вызывающий код ожидает Promise, event loop может выполнять другую работу.

Пример с проверкой допустимой задержки браузерного таймера:

function sleep(ms) {
  if (!Number.isFinite(ms) || ms < 0 || ms > 2147483647) {
    return Promise.reject(new RangeError('Недопустимая задержка'));
  }
  return new Promise(resolve => setTimeout(resolve, ms));
}
// await sleep(500);

Таймер не гарантирует точное время исполнения: callback может быть вызван позже из-за занятости или ограничений среды. Цикл ожидания по Date.now блокировал бы поток.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее