我得到了一个api响应,其中一次反馈了50000多种产品。响应末尾有“ @ odata.nextLink”。一个人可以使用'@ odata.nextLink'与节点自动获取剩余数据吗?
我尝试了一段时间的请求循环,但没有成功。
即。 while(body ['@ odata.nextLink']){请求...}
能做到吗?
答案 0 :(得分:0)
尝试以下内容:
const fakeAPI = async id => (
id==10
? { id }
: { id, nextId: id+1 }
);
( async () => {
let allResponses = [];
let finished = false;
let id = 0;
while (!finished) {
let response = await fakeAPI(id);
finished = response.nextId===undefined;
id = response.nextId;
allResponses.push(response);
}
console.log(allResponses);
})()
在使用异步代码循环时,使用async/await很酷。
答案 1 :(得分:0)
这对我有用:
async function getAllResults() {
var allResults = [];
let url = 'https://your/endpoint/url/';
do {
const res = await axios.get(url)
const data = await res.data.value;
url = res.data['@odata.nextLink']
allResults.push(...data);
} while(url)
return allResults;
}