reattempt-promise-function
reattempt-promise-function
allows you to easily reattempt async actions.
It does this by re-calling a function that returns a promise when that promise is rejected. You can specify the delay between attempts and the maximum number of attempts.
Perfect for waiting for services to start during Gulp and Grunt build and test tasks or attempting to reconnect to an application backend after becoming disconnected.
Quickstart
Node
npm install reattempt-promise-function
var reattempt = ;;
Browser
bower install https://github.com/beckyconning/reattempt-promise-function/tarball/master --save
;
Other options
You can also use bundle.js
with Browserify / CommonJS / AMD.
Example
var reattempt = ;var requestPromise = ;var uri = 'http://localhost:3000';var requestOptions = 'method': 'GET' 'uri': uri ; // Attempt http get request 10 times with a 250ms delay between attmpts ;
Caveats
If the function you want to reattempt contains references to this
make sure you
bind the required value of this
to it before passing it to reattempt
.
var { thisname = name; thissodium = sodium;}; Foodprototype { if typeof thisname !== 'undefined' && typeof thissodium !== undefined var summary = thisname + ' contains ' + thissodium + 'g of sodium per 100g.' return Promise; else return Promise; }; var strawberryJam = 'Stawberry jam' 02;var getStrawberryJamSummary = strawberryJamgetSummary; // The following is attempted 10 times with a 250ms delay between each attempt// before being rejected.; // The following resolves immediately.;
For more information about Function.prototype.bind()
please see the MDN documentation.
Testing
Use npm test
to run the unit tests.
Building
Use npm run build
to build the bundle.js
.