Назад к задачамПолучайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Junior — Senior
5
Ограничитель времени выполнения для асинхронных функций
Условие задачи
Необходимо реализовать функцию‑обёртку, принимающую два параметра – асинхронную функцию и лимит времени в миллисекундах. Возвращаемая функция должна выполнять исходную асинхронную задачу, но не дольше указанного ограничения. Требования: • Если работа исходной функции завершается быстрее лимита, обёртка должна вернуть полученный результат. • Если выполнение превышает заданный предел, обёртка должна отклонить промис с сообщением «Превышен лимит времени исполнения».
const originalFn = async (n) => {
await new Promise(res => setTimeout(res, 100));
return n * n;
}
withTimeout(originalFn, 50)(5); // rejected: Превышен лимит времени исполнения
withTimeout(originalFn, 150)(5); // resolved: 25
const sumFn = async (a, b) => {
await new Promise(res => setTimeout(res, 120));
return a + b;
}
withTimeout(sumFn, 100)(1, 2); // rejected: Превышен лимит времени исполнения
withTimeout(sumFn, 150)(1, 2); // resolved: 3