1.1.1 • Published 3 years ago

@mangar2/retry v1.1.1

Weekly downloads
2
License
LGPL-3.0-or-later
Repository
github
Last release
3 years ago

Abstract

asyncronously retries function calls several times with delay inbetween Prevents parallel retry loops with the same topic .

Contents

Meta

Fileretry.js
Abstractasyncronously retries function calls several times with delay inbetween Prevents parallel retry loops with the same topic .
AuthorVolker Böhm
CopyrightCopyright ( c ) 2020 Volker Böhm
LicenseThis 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

NameTypeAttributeDefaultDescription
immediateFirstCallbooleanoptionaltruetrue , if the first call should happen immediately

Retry Methods

on

on (topic, callback)

Registers a callback for a topic

on Parameters
NameTypeDescription
topicstringtopic to register a callback
callbackfunction(called on matching topic on retries
on throws
TypeDescription
Errorif 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
NameTypeDescription
countnumberquantity of retries
delayInMillisecondsnumberamount of milliseconds to wait between retries
callbackfunction(loopNumberfunction called on each retry
retry returns
TypeDescription
Promisepromise resolving , when all callbacks are done

stopRetry

stopRetry (topic)

Stops a retry loop

stopRetry Parameters
NameTypeDescription
topicstringname 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
NameTypeDescription
topicstringname of the topic to retry
countnumberquantity of retries
delayInMillisecondsnumberamount of milliseconds to wait between retries
callbackfunction(function called on each retry
topicRetry returns
TypeDescription
Promisepromise resolving , when all callbacks are done