2017-10-06 7 views

答えて

1

ここには、リポジトリIDごとに1つのリクエストを行う概念実証(rate limitingを参照)があります。

function getRepositories(ids) { 
    var promises = ids.map(id => getRepository(id).catch(() => {})); 
    return Promise.all(promises).then(repos => repos.filter(repo => repo !== undefined)); 

    function getRepository(id) { 
     return new Promise((resolve, reject) => { 
      const url = "https://api.github.com/repositories/" + id; 
      const xhr = new XMLHttpRequest(); 
      xhr.open("GET", url); 
      xhr.onreadystatechange =() => { 
       if (xhr.readyState == 4) { 
        if (xhr.status == 200) { 
         resolve(JSON.parse(xhr.response)); 
        } else { 
         reject(); 
        } 
       } 
      }; 
      xhr.send(); 
     }); 
    } 
} 

使用法:

const githubRepoIds = [ 1,2,3 ]; 
getRepositories(githubRepoIds).then(repos => console.log(repos)); 
関連する問題