ember-retry

1.0.0 • Public • Published

CI

ember-retry

Ember addon for exponetial backoff retries of a function.

Compatibility

  • Ember.js v3.16 or above
  • Ember CLI v2.13 or above
  • Node.js v10 or above

Installation

ember install ember-prismic-dom

Usage

import retry from 'ember-retry/retry'

retry((resolve, reject) => { //retry
  let ws = new WebSocket('ws://myflakyhost.com');
  ws.onopen = () => resolve(ws);
  ws.onerror = (error) => reject(error);
}).then((websocket) => {
  //do something with websocket
});

retry(() => {
  return this.store.find('user', 353232); //retry if promise fails with error
}).then((user) => {
  //do something with user
});

By default will retry 5 times after 0.5s, 1s, 2s, 4s, 8s. The number of retries, initial delay before retries and the function used to calculate retry delay can all be configured.

retry(() => {
  return this.store.find('user', 353232);
}, 3, 1000) //retry 3 times at 1000ms, 2000ms, 4000ms
retry(() => {
  return this.store.find('user', 353232);
}, 5, (retryIndex) => { return retryIndex+1*40; }); //retry 5 times at 40ms, 80ms, 120ms, 160ms, 200ms

Will retry if return value isNone

retry(() => {
  if (Math.random() > 0.5) {
    return 'What am I trying to do?';
  }
}).then((str) => {
  // str is 'What am I trying to do?' if successful;
})

Can pass an anonymous function to retry conditionally In this case if the response.status is not 401

retry(() => {
  return this.store.find('user', 353232);
}, 5, 1000, (response) => { return (response.status !== 401) });

Contributing

See the Contributing guide for details.

Alternatives

Why don't you use existing alternative instead e.g. ember-backoff?

I wanted a cleaner way to retry a function where a promise wasn't returned.

Package Sidebar

Install

npm i ember-retry

Weekly Downloads

43

Version

1.0.0

License

MIT

Unpacked Size

16.3 kB

Total Files

12

Last publish

Collaborators

  • mrloop