Переменная вне значения извлечения API FB возвращает неопределенное значение - PullRequest
1 голос
/ 10 марта 2019

Я пытаюсь зациклить URL в FB API, чтобы получить все фотографии, не разбивая их на страницы (для поиска фотографий), но когда я пытаюсь определить значение для «после», он всегда возвращает неопределенное значение.Это код:

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» всегда возвращает undefined.Как вернуть значение для «следующего».

Заранее спасибо.

1 Ответ

0 голосов
/ 11 марта 2019

fetch / AJAX асинхронный . Таким образом, весь цикл будет полностью завершен, ДО того, как вы дойдете до первого обратного вызова извлечения. Для этого вы можете использовать рекурсивную функцию или (еще лучше) async/await:

let result = await fetch(url);

Кроме того, вы не должны использовать количество альбомов для цикла - просто цикл, пока в ответе есть «следующая» ссылка.

...