Итерация по страницам API-результатов в Javascript - PullRequest
0 голосов
/ 07 ноября 2019

Я пишу функцию в Javascript, которая делает выборку и получает результаты, которые разбиты на страницы (как и ожидалось, результаты длинные).

Результаты будут содержать "next_page", которая является домашним URL выборки для следующей страницы результатов. В идеале я хотел бы зацикливаться и постоянно извлекать, пока не достигну конца результатов, то есть когда "next_page" =null.

Кажется, я не могу понять, как перебрать результаты, пока next_page не равен NULL. Кажется, что я застрял в бесконечном цикле.

Любые предложения приветствуются. Я предоставил псевдокод ниже.

while(next_page!=null){
   fetch(apiUrl)
  .then(res=>res.json())
   .then(data => {
    apiUrl=data["next_page]
   }
  if(apiUrl == null)
    {
      res.send(data)
      break;
    }
}

Я думал, что цикл while позволит мне выполнять итерации до тех пор, пока не будет следующей страницы (иначе, когда она пуста). Похоже, что это просто бесконечный цикл без какого-либо нажатия на извлечение, потому что apiUrl не устанавливается в ноль.

Ответы [ 2 ]

0 голосов
/ 07 ноября 2019

Вы можете попробовать функцию ниже, вместо цикла while

// Initial API Call
fetchData('http://localhost/test1.php?page=1');

// Create the function for API Call 
function fetchData(apiUrl){ 
  fetch(apiUrl)
    .then(res=>res.json())
    .then(data => {
      console.log(data);
      apiUrl = data['next_page'];
      // Check next API url is empty or not, if not empty call the above function 
      if(apiUrl != '' && apiUrl != null){
          fetchData(apiUrl);
      }
  })
}
0 голосов
/ 07 ноября 2019

Это, вероятно, потому что вы читаете от data["next_page"] до apiUrl, но затем проверяете другую переменную в цикле. Должно быть вместо while(apiUrl) { ....

...