Перейти к содержимому
Задача · Асинхронность · урок 12 из 12

Задача: промис с ограничением времени

Напишите функцию function withTimeout(promise, ms, fallback), которая возвращает новый промис. Если promise выполнится раньше, чем пройдут ms миллисекунд, новый промис выполняется с тем же значением; если promise раньше отклонится, новый промис отклоняется с той же ошибкой. Если за ms миллисекунд не случилось ни того ни другого, новый промис выполняется со значением fallback.

В тестах after(ms, value) — промис, который выполнится со значением value через ms миллисекунд, а failAfter(ms, message) через ms миллисекунд отклонится с ошибкой message.

  • withTimeout(after(10, "data"), 40, "late") → "data"
  • withTimeout(after(40, "data"), 10, "late") → "late"
  • withTimeout(failAfter(10, "boom"), 40, "late") → отказ с ошибкой boom

Ограничения: ms — целое число от 10 до 50; fallback возвращается как есть, даже когда это 0; отказ, который случился позже ms миллисекунд, уже не важен.

Не добавляйте лишних импортов, если в задаче это прямо не сказано.

with-timeout.js — javascript
javascript · строк: 4
Ctrl+Enter запуск · Esc выйти из редактора

Подпишись, чтобы пройти курс

Курс бесплатный. Войди через Telegram и подпишись на канал — откроются все уроки.

Войти другим способом