Функция, реализующая паузу перед возвратом результата

Верните Promise, который разрешится переданным значением после таймера. Это неблокирующая задержка: вызывающий код должен использовать await или then.

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

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

Верните Promise, который разрешится переданным значением после таймера. Это неблокирующая задержка: вызывающий код должен использовать await или then.

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

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

Условие

Создайте функцию, которая принимает два параметра: длительность паузы (в миллисекундах) и значение, которое следует вернуть после её завершения. Функция должна приостановить выполнение на указанный промежуток времени, а затем вернуть переданное значение.

function delay(ms, result) {
    // ваш код здесь
}

Ответ

Верните Promise, который разрешится переданным значением после таймера. Это неблокирующая задержка: вызывающий код должен использовать await или then.

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

Например, await delay(1000, 'готово') продолжит async-функцию примерно через секунду. Основной поток не блокируется, другие события продолжают выполняться. Таймер задаёт минимальную задержку и имеет ограничения диапазона; очень длительные паузы разбивают на части. Если result — Promise/thenable, resolve усвоит его состояние, а не вернёт объект как непрозрачное значение.

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

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

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

Подробнее