parent
0f08e70255
commit
cefc6083f4
@ -1,3 +1,5 @@ |
||||
<template > |
||||
<router-view /> |
||||
</template> |
||||
<script setup> |
||||
</script> |
||||
|
@ -0,0 +1,49 @@ |
||||
|
||||
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."); |
||||
} |
||||
}; |
||||
} |
||||
|
||||
|
Loading…
Reference in new issue