retry ^1.0.4
Promise 返回的函数会在成功之前进行重试。您可以设置重试次数和每次重试之间的间隔。
签名
ts
function retry<T>(func: () => Promise<T>): Promise<T>;
function retry<T>(func: () => Promise<T>, retries: number): Promise<T>;
function retry<T>(func: () => Promise<T>, { retries, delay, signal }: RetryOptions): Promise<T>;参数
func(() => Promise<T>): 一个返回Promise的函数。retries: 重试的次数。默认值为Number.POSITIVE_INFINITY,即会一直重试直到成功。delay: 重试之间的间隔,单位为毫秒(ms),默认值为0。signal: 一个可以用来取消重试的AbortSignal。
返回值
(Promise<T>): func 返回的值。
错误
如果重试次数达到 retries 则抛出错误。
示例
ts
import { retry, RetryOptions } from '@/uni_modules/kux-toolkit'
const getNumber = async () => {
return Promise.resolve(3);
}
const getError = async (): Promise<Error> => {
return Promise.reject(new Error('MyFailed'));
}
async function retryExample() {
const result = await retry(getNumber, {
delay: 1000,
retries: 2,
} as RetryOptions);
console.log(result); // 打印 3
try {
await retry(getError, {
delay: 1000,
retries: 2,
} as RetryOptions);
} catch (error) {
console.log(error.message); // 打印 MyFailed
}
}
retryExample();