export function retryAndRepeatRequest(requestFn, maxRetries = 3, retryDelay = 1000, interval = 300000) { let retries = 0; // 当前重试次数 let isRunning = true; // 控制是否继续执行 // 内部重试逻辑 async function attemptRequest() { try { const res = await requestFn(); // 调用请求函数 // 检查请求是否成功 if (res.code == 200) { // console.log("Request succeeded:", res); // 如果请求成功,处理数据并设置定时器每隔指定时间重新发起请求 setTimeout(() => { if (isRunning) { attemptRequest(); } }, interval); } else { throw new Error(`Request failed with code ${res.code}`); } } catch (error) { console.error(`Attempt failed: ${error.message}`); retries++; if (retries <= maxRetries) { console.log(`Retrying in ${retryDelay / 1000} seconds...`); setTimeout(attemptRequest, retryDelay); } else { console.error(`Request failed after ${maxRetries} attempts: ${error.message}`); isRunning = false; // 停止后续执行 } } } // 启动第一次请求 attemptRequest(); // 提供一个停止函数 return { stop: () => { isRunning = false; console.log("Request loop stopped."); } }; }