26 lines
588 B
TypeScript
26 lines
588 B
TypeScript
export const retryAll = async <T>(
|
|
promises: (() => Promise<T>)[],
|
|
retries: number = 3,
|
|
delay: number = 1000
|
|
) => {
|
|
const wrappedPromises = promises.map((fn) => retry(fn, retries, delay))
|
|
return Promise.allSettled(wrappedPromises)
|
|
}
|
|
|
|
export const retry = async <T>(
|
|
fn: () => Promise<T>,
|
|
retries: number = 3,
|
|
delay: number = 1000
|
|
): Promise<T> => {
|
|
try {
|
|
return await fn()
|
|
} catch (err) {
|
|
if (retries === 0) {
|
|
return Promise.reject(err)
|
|
}
|
|
return new Promise((resolve) =>
|
|
setTimeout(() => resolve(retry(fn, retries - 1)), delay)
|
|
)
|
|
}
|
|
}
|