mirror of
https://github.com/keven1024/015.git
synced 2026-05-26 23:19:37 +00:00
22 lines
531 B
TypeScript
22 lines
531 B
TypeScript
import asyncWait from './asyncWait'
|
|
|
|
interface AsyncRetryOptions {
|
|
retryCount?: number
|
|
delay?: number
|
|
}
|
|
|
|
const asyncRetry = async <T>(fn: () => Promise<T>, options: AsyncRetryOptions = {}) => {
|
|
const { retryCount = 3, delay = 1000 } = options || {}
|
|
await asyncWait(delay)
|
|
try {
|
|
return await fn()
|
|
} catch (error) {
|
|
if (retryCount > 0) {
|
|
return await asyncRetry(fn, { retryCount: retryCount - 1, delay: delay * 2 })
|
|
}
|
|
throw error
|
|
}
|
|
}
|
|
|
|
export default asyncRetry
|