Я обращаюсь к REST API SongKick в моем приложении ReactJS, используя Axios.
Я не знаю, сколько запросов я собираюсь сделать, потому что в каждом запросе есть предел данных, которыеЯ могу получить, поэтому в каждом запросе мне нужно запросить другую страницу.
Для этого я использую цикл for, например:
while (toContinue)
{
axios.get(baseUrl.replace('{page}',page))
.then(result => {
...
if(result.data.resultsPage.results.artist === undefined)
toContinue = false;
});
page++;
}
Теперь,проблема, с которой я сталкиваюсь, заключается в том, что мне нужно знать, когда все мои запросы будут выполнены.Я знаю о Promise.All
, но чтобы использовать его, мне нужно знать точные URL-адреса, с которых я собираюсь получить данные, и в моем случае я не знаю их, пока не получу пустые результаты из запроса,это означает, что последний запрос является последним.
Конечно, этот вызов axios.get
является асинхронным, поэтому я знаю, что мой код не является оптимальным и не должен быть написан таким образом, но я искал этот видпроблемы и не может найти правильное решение.
Есть ли способ узнать, когда весь асинхронный код внутри функции завершен?Есть ли другой способ получить все страницы из REST API без зацикливания, потому что при использовании моего кода это вызовет дополнительные запросы (потому что это асинхронный вызов), хотя я достиг пустых результатов?