Code Lab

Ждать условие

ЛёгкаяАсинхронный код8 мин

Напиши функцию waitFor(cond, interval, timeout), которая возвращает промис. Вызови cond() сразу и потом вызывай каждые interval миллисекунд.

Как только cond() вернёт true, промис выполняется. Если прошло timeout миллисекунд, а условие всё ещё false, промис отклоняется с ошибкой new Error('Timeout'). В обоих случаях проверки прекращаются.

Примеры

await waitFor(() => true, 50, 500)

Вернёт undefined

Условие верно сразу, промис выполняется без значения.
await waitFor(() => false, 50, 200).catch((e) => e.message)

Вернёт 'Timeout'

За 200 мс условие так и не стало верным.

Источник

Загружаем редактор...
  1. Условие верно сразу, ждать interval не нужно
  2. Условие становится верным через 120 мс
  3. Условие не выполнилось за 200 мс

Скрытые тесты запускаются по Submit.