我正在尝试在FB API中循环播放URL,以便我可以不分页地检索所有照片(用于照片搜索),但是当我尝试为“ after”定义值时,它始终返回未定义。这是代码:
let next;
for (let ctr=0; ctr<albumcount; ctr++) {
let url = '';
if (ctr>0) {
console.log(ctr, next)
url = `https://graph.facebook.com/v3.2/${val}?fields=photos.limit(100)%7Bimages%2Cname%2Clink%7D&after=${next}&access_token=${access_token}`;
} else {
url = `https://graph.facebook.com/v3.2/${val}?fields=photos.limit(100)%7Bimages%2Cname%2Clink%7D&access_token=${access_token}`;
}
fetch(url)
.then(results => {
return results.json();
}).then(data => {
next = data.photos.paging.cursors.after;
});
}
我已经尝试了多种方法,但是“ next”总是返回未定义的。如何为“ next”返回一个值。
谢谢。
答案 0 :(得分:0)
获取/ AJAX是异步。因此,整个循环将在您到达第一个访存回调之前完全完成。您可以为此使用递归函数,或者(甚至更好)使用async/await
:
let result = await fetch(url);
此外,您不应在循环中使用专辑计数-只要循环中存在响应中的“下一个”链接即可。