Code Lab

Wait for a condition

EasyAsync code8 min

Write a function waitFor(cond, interval, timeout) that returns a promise. Call cond() at once and then every interval milliseconds.

As soon as cond() returns true, the promise resolves. If timeout milliseconds have passed and the condition is still false, the promise rejects with new Error('Timeout'). In both cases the checks stop.

Examples

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

Returns undefined

The condition is true at once, so the promise resolves with no value.
await waitFor(() => false, 50, 200).catch((e) => e.message)

Returns 'Timeout'

The condition never became true within 200 ms.

Source

Loading the editor...
  1. The condition is true at once, no need to wait for interval
  2. The condition becomes true after 120 ms
  3. The condition is not met within 200 ms

Hidden tests run on Submit.