parallel promise 例1

Promise的并行执行

by Sabrina Luo

JavaScript

var keywords = ['google', 'amazon', 'facebook'];
var api = 'https://api.github.com/search/users?q=';

// 这个函数不用理会,理解为promise包起来的$.get,resolve的是json格式的内容
function getData(url) {
  return fetch(url).then(function(response) {
    return response.json();
  })
}

var promiseArrayOfStep1 = keywords.map(function(keyword) {
  return getData(api + keyword);
})

Promise.all(promiseArrayOfStep1)
  .then(function(users) {
    var promiseArrayOfStep2 = users.map(function(user) {
      // user.items[0]为搜索到的符合条件的第一个用户
      return getData(user.items[0].repos_url);
    })
    return Promise.all(promiseArrayOfStep2);
  })
  .then(function(repos) {
    repos.forEach(function(repo) {
      // repo[0]为该用户的第一个repo
      console.log(repo[0].name);
    })
  })
  .catch(function(e) {
    console.log(e);
  })