Добрый день!
Дорогие друзья, не могу придумать и нагуглить нормальное решение.
У меня есть функция, который посылает простой get запрос по урлу и получает респонс.
При этом я урлу добавляю query параметр, page=1
let url = '...некий url';
let page = 1;
url.searchParams.append('page', page);
function sendRequest(url) {
return fetch(url)
.then (response => response.json())
.then (response => //некий код-действия с респонсом)
Далее мы получаем в респонсе некий объект. У этого объекта есть помимо прочих 2 свойства. Свойство page и свойство total_pages.
Url всегда будет разный. По одному урлу может быть 10 total_pages, по другому урлу 20 total_pages и так далее..
Когда по урлу page = 1 и total_pages = 1, то всё окей. Я забираю данные c page #1 и проблем нет. Но когда total_pages = 10, к примеру, то мне нужно вызвать 10 раз этот fetch, каждый раз меняя query параметр, поскольку информация дозируется, на каждом page свои данные.
Я попытался сделать что-то типа рекурсии. Если в респонсе больше, чем 1 total_pages, то мы увеличиваем page на +1
Присваиваем новый query параметр урлу и рекурсивно вызываем fetch
function sendRequest(url) {
return fetch(url)
.then (response => response.json())
.then (response => { // некий код-действия с респонсом
if (response.page < response.total_pages) {
page++; // увеличиваем page с 1 на 2
url.searchParams.set('page', page) // установим урлу query параметр page = 2
sendRequest(url) // рекурсивно вызываем fetch уже с новым query параметром
})
}
Но такая конструкция нифига не работает.
Кто может подсказать валидный способ вызывать фетч повторно, при этом увеличивая query параметр и вызывая эту же функцию fetch с обновлённым урлом в аргументе?
Если вдруг непонятно написал, то скажите, что не так
Спасибо огромное за советы.