我需要编写一个具有以下要求的函数:
每f(A)
秒运行一次m
每f(A)
秒发出一个http请求
如果请求在单个f(B)
测试中连续失败,则下一个n
将每隔f(B)
秒运行一次
如果在一次o
测试中f(A)
没有连续失败,下一次f(A)
将像往常一样每隔p
秒运行一次。
我做到了:
function runTests(ms) {
let runTestsMS = ms || m;
setTimeout(() => {
let count = 0;
setInterval(async () => {
try {
await axios.get('...');
count = 0;
runTestsMS = ms || m;
} catch (error) {
count += 1;
if (count === o) {
runTests(p);
}
}
}, n);
runTests(runTestsMS);
}, runTestsMS);
}
runTests();
此函数不执行上述规则3。如果连续出现故障,下一个
f(B)
仍将每隔o
秒运行一次。我错过了什么?
最佳答案
在您的代码中,函数runTests()
是在没有参数的情况下调用的,这是正常的,因为您在函数内部指定了let runTestsMS = ms || m
。
当ms
和m
都没有实际值时,就会出现问题。