Если использование 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 только заблокирует приложение.