Retrying
- API Reference Flow module
- Online demos
When a function may succeed after some attempts, you might need a retry logic - keep trying the function until it succeeds, or after a certain number of attempts. You want some kind of waiting period between each attempt, eg to wait for a network connection.
This can be achieved using retryFunction
.
In the example, we will try up to five times to run the async function doSomething
, starting with 1 second delay if it fails. This time gets longer and longer with each attempt.
import { retry } from "https://unpkg.com/ixfx/dist/flow.js"
const doSomething = () => {
// If this function throws an error or returns undefined,
// it's assumed to have failed
// for it to succeed it has to return a value
}
const result = await retryFunction(doSomething, { limitAttempts: 5, startAt: 1000 });
if (result.success) {
// Yay result.value will contain the result of `doSomething`
} else {
// result.message tells why it failed
}
See also:
waitFor
: call a function and be notified if it doesn't finish within a certain time