@mangar2/retry
v1.1.1
Published
Helps to call functions multiple times with delays inbetween
Readme
Abstract
asyncronously retries function calls several times with delay inbetween Prevents parallel retry loops with the same topic .
Contents
Meta
| | | | --- | --- | | File | retry.js | | Abstract | asyncronously retries function calls several times with delay inbetween Prevents parallel retry loops with the same topic . | | Author | Volker Böhm | | Copyright | Copyright ( c ) 2020 Volker Böhm | | License | This software is licensed under the GNU LESSER GENERAL PUBLIC LICENSE Version 3 . It is furnished "as is" , without any support , and with no warranty , express or implied , as to its usefulness for any purpose . |
Class Retry
new Retry(immediateFirstCall)
Class providing a retry facility calling a callback "count" times asyncronously with a delay inbetween Additionally providing a "topic" based retry ( "topicRetry" ) with the following functionality :
- Asynchronously calles a global callback "count" times with a delay inbetween
- If no global callback is provided , it calls a callback prior registrated to the topic
- If topicRetry is called with a still running existing retry loop for the same topic , this existing is terminated .
Example
const retry = new Retry()
// prints 5 times hello world, with a delay of 1 second between each output
retry.retry(5, 1000, () => console.log("hello world"))
// prints hello1, world, hello2, world, hello2
retry.topicRetry('hello', 2, 1000, () => console.log("hello1"))
retry.topicRetry('world', 2, 1000, () => console.log("world"))
retry.topicRetry('hello', 2, 1000, () => console.log("hello2"))Retry Parameters
| Name | Type | Attribute | Default | Description |
| ---------- | ------------ | ------------ | ------------ | ----------------- |
| immediateFirstCall | boolean | optional | true | true , if the first call should happen immediately | |
Retry Methods
on
on (topic, callback)
Registers a callback for a topic
on Parameters
| Name | Type | Description |
| ---------- | ------------ | ----------------- |
| topic | string | topic to register a callback | |
| callback | function( | called on matching topic on retries | |
on throws
| Type | Description |
| ---- | ----------- |
| Error | if the callback is not 'function' |
retry
async retry (count, delayInMilliseconds, callback) => {Promise}
Calls a callback function multiple times and waits between the calls .
retry Parameters
| Name | Type | Description |
| ---------- | ------------ | ----------------- |
| count | number | quantity of retries | |
| delayInMilliseconds | number | amount of milliseconds to wait between retries | |
| callback | function(loopNumber | function called on each retry | |
retry returns
| Type | Description |
| ---- | ----------- |
| Promise | promise resolving , when all callbacks are done |
stopRetry
stopRetry (topic)
Stops a retry loop
stopRetry Parameters
| Name | Type | Description |
| ---------- | ------------ | ----------------- |
| topic | string | name of the retry topic | |
topicRetry
async topicRetry (topic, count, delayInMilliseconds, callback) => {Promise}
Calls a callback function multiple times and waits between the calls . If you call "retry" with the same topic a second time , it will stop the running retry loop with the same topic
topicRetry Parameters
| Name | Type | Description |
| ---------- | ------------ | ----------------- |
| topic | string | name of the topic to retry | |
| count | number | quantity of retries | |
| delayInMilliseconds | number | amount of milliseconds to wait between retries | |
| callback | function( | function called on each retry | |
topicRetry returns
| Type | Description |
| ---- | ----------- |
| Promise | promise resolving , when all callbacks are done |
