Я хотел бы получить данные из этого API: "https://swapi.co/api/planets". Данные разбиваются на страницы, как https://swapi.co/api/planets/?page=1, https://swapi.co/api/planets/?page=2 ....
Я хочу создать API, который принимает URL, страницу и обратный вызов в качестве аргументов , Он будет извлекать все данные постранично, пока не достигнет страницы, указанной в аргументах.
Например,
function loadData(https://swapi.co/api/planets, 5, cb)
Это загрузит данные со страницы 1, страницы 2, страницы 3, страницы 4 и страницы 5.
Вот моя попытка, однако она не работает. Может кто-нибудь указать мне правильное направление?
function fn(url, page, pages, cb) {
return new Promise((resolve, reject) => {
const endpoint = `${url}/?page=${page}`;
fetch(endpoint).then(response => {
if (response.status !== 200) {
throw `${response.status} ${response.statusText}`;
}
response.json().then(data => {
cb(data);
if (page <= pages) {
fn(url, page + 1, pages, cb)
.then(resolve)
.catch(reject);
} else {
resolve();
}
});
});
});
}
function cb(data) {
console.log(data)
}
fn('https://swapi.co/api/planets', 1, 3, cb).then(() => {});
Последующий вопрос: если вместо передачи обратного вызова в качестве аргумента я хочу передать массив для сбора загруженных данных, как настроить этот API?