Отложенный вызов функции

Если использование setTimeout не запрещено, верните его результат из обёртки. Callback будет вызван после задержки, а возвращённый ID позволит отменить вызов.

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

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

Если использование setTimeout не запрещено, верните его результат из обёртки. Callback будет вызван после задержки, а возвращённый ID позволит отменить вызов.

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

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

Условие

Функция откладывает выполнение переданной callback‑функции на указанный интервал в миллисекундах. Она должна работать аналогично setTimeout: принимать функцию‑обработчик и значение задержки, а затем вызвать эту функцию после истечения заданного времени.

Ответ

Если использование setTimeout не запрещено, верните его результат из обёртки. Callback будет вызван после задержки, а возвращённый ID позволит отменить вызов.

function delay(callback, milliseconds, ...args) {
  return setTimeout(callback, milliseconds, ...args);
}
const timer = delay(console.log, 500, 'done');
// clearTimeout(timer); // отмена до выполнения

Задержка означает минимальное ожидание, а не гарантию точного момента. Таймер не блокирует поток. Полностью воспроизвести планирование времени без таймера или другого API среды чистым синхронным JavaScript нельзя; busy-wait только заблокирует приложение.

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

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

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

Подробнее