У меня есть два запроса API, один из которых вызывается каждые 5000 мс, а другой - каждые 30000 мс. Я хочу убедиться, что каждый вызов завершен, прежде чем отправлять новый запрос на сервер. Я не хочу, чтобы какие-либо запросы перекрывали друг друга. Например, если API func1 еще не завершено, я не хочу выполнять вызов API func2 до тех пор, пока тот не завершится.
Это то, что я пробовал до сих пор.
async function vals() {
try {
await func1()
.then(response => response.json())
.then(result => display_result(result))
.catch(error => console.error('Error: ', error));
await func2()
.then(response => response.json())
.then(result => display_result(result))
.catch(error => console.error('Error: ', error));
}
catch(error) {
return error;
}
}
vals();
Вот func1 и func2.
function func1() {
return setInterval(() => fetch(url, { method: 'GET' }), 5000);
}
function func2() {
return setInterval(() => fetch(url, { method: 'GET' }), 30000);
}
Я ожидал бы, что это сначала запустит func1 (), подождет, пока он разрешится, а затем запустит func2 (). Вместо этого func1 () вызывается дважды и никогда не попадает в func2 (). Должны ли setIntervals быть установлены внутри функции vals ()? Любое руководство, чтобы сделать эту работу будет высоко ценится.