Как сделать повторный/рекурсивный fetch?
Добрый день!
Дорогие друзья, не могу придумать и нагуглить нормальное решение. У меня есть функция, который посылает простой 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 с обновлённым урлом в аргументе? Если вдруг непонятно написал, то скажите, что не так :) Спасибо огромное за советы. |
Цитата:
Но... вопрос остаётся открытым. Есть ли какие-то другие изящные валидные способы вызывать fetch повторно??? Возможно, рекурсия - не самое лучшее решение. Спасибо) |
Цитата:
|
Часовой пояс GMT +3, время: 01:16. |