Создание функции паузы (sleep)

sleep возвращает Promise, который выполняется из callback setTimeout. Ожидание не блокирует поток JavaScript, а реальная задержка может оказаться больше заданной.

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

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

sleep возвращает Promise, который выполняется из callback setTimeout. Ожидание не блокирует поток JavaScript, а реальная задержка может оказаться больше заданной.

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

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

Условие

Требуется реализовать функцию sleep, которая принимает один аргумент — количество миллисекунд, и возвращает объект Promise. Этот Promise должен переходить в состояние resolved через указанный промежуток времени.

Пример использования:

sleep(2000).then(() => console.log('2 секунды прошли'));

Ответ

sleep возвращает Promise, который выполняется из callback setTimeout. Ожидание не блокирует поток JavaScript, а реальная задержка может оказаться больше заданной.

function sleep(ms) {
  if (!Number.isFinite(ms) || ms < 0) {
    return Promise.reject(new RangeError('Некорректная задержка'));
  }
  return new Promise(resolve => setTimeout(resolve, ms));
}

await sleep(2000);
console.log('Продолжаем');

Таймер задаёт задержку до возможности выполнить callback, а не точное время исполнения. Пока Promise ожидает, event loop может обрабатывать другие задачи. Для очень больших задержек нужно учитывать ограничения таймеров среды.

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

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

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

Подробнее