Асинхронная задержка выполнения с помощью функции sleep

sleep возвращает Promise, который разрешается по таймеру. await приостанавливает только текущую async-функцию, не блокируя основной поток JavaScript.

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

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

sleep возвращает Promise, который разрешается по таймеру. await приостанавливает только текущую async-функцию, не блокируя основной поток JavaScript.

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

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

Условие

Необходимо реализовать функцию sleep, которая останавливает дальнейшее выполнение кода на заданный промежуток времени (в миллисекундах). Пример использования в асинхронном контексте:

(async () => {
    await sleep(500);
    console.log(777);
})();

Ответ

sleep возвращает Promise, который разрешается по таймеру. await приостанавливает только текущую async-функцию, не блокируя основной поток JavaScript.

function sleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}
(async () => {
  await sleep(500);
  console.log(777);
})();

Число 777 появится не раньше выполнения таймера примерно через 500 мс; занятый поток или ограничения браузера могут увеличить задержку. Для обычных неотрицательных интервалов этого достаточно. Цикл ожидания по Date.now использовать не нужно: он блокирует интерфейс и выполнение других задач.

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

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

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

Подробнее