我需要编写一个具有以下要求的函数:
f(A)秒运行一次
mf(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
msm都没有实际值时,就会出现问题。

10-08 09:18