首页 > 解决方案 > FB API 获取值之外的变量返回未定义

问题描述

我正在尝试在 FB API 中循环 URL,以便我可以检索所有照片而无需对其进行分页(用于照片搜索),但是当我尝试定义“之后”的值时,它总是返回未定义。这是代码:

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;
  });
}

我一直在尝试多种事情,但“下一个”总是返回未定义。如何返回“下一个”的值。

提前致谢。

标签: reactjsfacebook-graph-apifetches6-promise

解决方案


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

let result = await fetch(url);

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


推荐阅读