FB API提取值之外的变量返回未定义

时间:2019-03-10 08:42:34

标签: reactjs facebook-graph-api fetch es6-promise

我正在尝试在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”返回一个值。

谢谢。

1 个答案:

答案 0 :(得分:0)

获取/ AJAX是异步。因此,整个循环将在您到达第一个访存回调之前完全完成。您可以为此使用递归函数,或者(甚至更好)使用async/await

let result = await fetch(url);

此外,您不应在循环中使用专辑计数-只要循环中存在响应中的“下一个”链接即可。