@mangar2/retry
v1.1.1
Published
Helps to call functions multiple times with delays inbetween
Downloads
1
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 |