promise.retry
TypeScript icon, indicating that this package has built-in type declarations

2.0.2 • Public • Published

promise.retry

add (timeout and fail) retry for async functions

Build Status Coverage Status npm version npm downloads npm license

Install

$ npm i -S promise.retry

Note

this package require async/await environment.

Alternatives

asyncAction means a function with no parameters, give async funtion getUser(uid: string): Promise<User>, u need to wrap parameter in a asyncAction: const user = await pretry(() => getUser('zhangsan'), options)

this package take a different approach: const tryGetUser = pretry(getUser, options), this is a async wrapper has same signature as getUser

API

import { pretry, TimeoutError, RetryError } from 'promise.retry'

pretry

const fnWithRetry = pretry(fn, options)
  • fn the original async function
  • options
    • times : number try how many times
    • timeout : number the timeout for each attempt, in ms
    • delay: number or (i: number) => number, retry delay, in ms.
    • onerror : (err: any, i: number) => any add extra action on an attempt error

i is always 0 based. (starts from 0)

TimeoutError

re-export from promise.timeout, see https://github.com/magicdawn/promise.timeout#api

RetryError

if all attempts failed, p = fnWithRetry(), p will be reject with a RetryError instance.

props

  • times : number same as pretry options
  • timeout : number same as pretry options
  • message : string the error message
  • errors : [err1, err2, ...] the errors

AbortSignal

if options.timeout is provided, ptimeout will provide a extra runtime argument signal?: AbortSignal use like below, see more at https://github.com/magicdawn/promise.timeout#singal

async fn(signal?: AbortSignal) {
	signal?.addEventListener('abort', () => {
		// custom clean up
	})
}

const fn2 = pretry(fn, { timeout: 1000 })
await fn2() // <- no `signal` arg here, the `signal` in fn is provided by ptimeout at runtime, only when options.timeout specified

See Also

Changelog

CHANGELOG.md

License

the MIT License http://magicdawn.mit-license.org

Readme

Keywords

Package Sidebar

Install

npm i promise.retry

Weekly Downloads

50

Version

2.0.2

License

MIT

Unpacked Size

8.76 kB

Total Files

4

Last publish

Collaborators

  • magicdawn