【发布时间】:2020-03-09 08:17:07
【问题描述】:
我想从此 API 获取数据:“https://swapi.co/api/planets”。数据分页像 https://swapi.co/api/planets/?page=1, https://swapi.co/api/planets/?page=2....
我想构建一个接受 url、页面和回调作为参数的 API。它将逐页获取所有数据,直到到达参数中指定的页面。
例如
function loadData(https://swapi.co/api/planets, 5, cb)
这将从 page1、page2、page3、page4 和 page5 加载数据。
这是我的尝试,但它不起作用。有人可以指出我正确的方向吗?
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?
【问题讨论】:
标签: javascript ecmascript-6 frontend