attempt-man
Version:
Beautifully manage attempts for your process!
73 lines (47 loc) • 1.65 kB
Markdown
Beautifully manage attempts for your process!
- Node.js >= 6.0.0
Install via npm:
npm install attempt-man
If an exception is thrown in the callback function, it will keep start a new attempt within the allowed range.
Create and run an attempt and allow the attempts up to `5` times:
~~~js
const Attempter = require('attempt-man').Attempter;
var counter = 0;
new Attempter(5).run(() => {
if (++counter <= 2) throw new Error();
return 'Hello World! Counter: ' + counter;
}).then(result => {
console.log(result);
});
// => 'Hello World! Counter: 3';
~~~
Here we see that the function was successfully executed at the third time.
> Note: The `Attempter.run()` method is returns a Promise.
> The attempts will not be continued when there was no exception throws in the last attempt.
When all attempts fail, it will throws an `AttemptsFailedError`. Since the `run` method
is giving you a Promise, so you can catch it by the `catch` method.
~~~js
var AttemptsFailedError = require('attempt-man').AttemptsFailedError;
new Attempter().run(() => {
throw new Error('foo');
}).catch(err => {
console.log('Totally tried: ' + err.attempts.length);
console.log('Last error: ' + err.getLastError().message);
});
// => Totally tried: 5
// => Last error: foo
~~~
You can get the `AttemptState` object by access the `attempts` array of the `AttemptsFailedError`.
~~~js
err.attempts[1].error; // The first one.
err.attempts[2].error; // The second one.
err.attempts[3].error; // The third one.
// ...
~~~