/**
* 创建一个带有重试机制的请求函数,用于避免请求受限或失败时重新尝试请求。
* @param {function} func - 要执行的请求函数。
* @param {number} maxCount - 最大重试次数,默认为 10。
* @param {number} time - 重试间隔时间(毫秒),默认为 1500 毫秒。
* @returns {object} 包含请求函数的对象。
*
* @example
* import { retryRequest } from '@/utils/public';
* // 使用 retryRequest 创建可重试的请求函数
* const { request } = retryRequest(simulateFailedRequest, 5, 1000);
* // 发起请求
* const result = await request();
*/
export function retryRequest(func, reReq: { retry?: boolean; time?: number; maxCount?: number }) {
let interval: any = null;
let count: any = 1;
const { time = 1500, maxCount = 10 } = reReq;
const request = async (...args): Promise<any> => {
return new Promise<void>((resolve, reject) => {
clearInterval(interval);
interval = setInterval(async () => {
if (count < maxCount) {
const result = await func(...args);
if (result) {
clearInterval(interval);
resolve(result);
} else {
count++;
}
} else {
clearInterval(interval);
console.log('超过最大次数');
reject();
}
}, time);
});
};
return { request };
}
标签:const,请求,interval,number,重试,result,受限
From: https://www.cnblogs.com/zhengzhijian/p/17759162.html