Мне нужно написать функцию со следующими требованиями:
Запуски f(A)
каждые m
секунд
f(A)
делает HTTP-запрос f(B)
каждые n
секунд
Если запрос f(B)
не проходит o
подряд в течение одного f(A)
теста, следующий f(A)
будетзапускать каждые p
секунд
Если f(B)
не выходит из строя o
подряд в течение одного f(A)
теста, то следующий f(A)
запускается каждые m
секунд, как обычно.
Мне удалось сделать это:
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(A)
по-прежнему запускаются каждые m
секунд.
Чего мне не хватает?