sequential promise 例3

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

function getRepoName(url) {
  return getData(url).then(function(repo) {
    console.log(repo[0].full_name);
  });
}

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

var sequence = Promise.resolve();
promiseArrayOfStep1.forEach(function(promiseOfStep1) {
  sequence = sequence.then(function() {
    return promiseOfStep1.then(function(user) {
      getRepoName(user.items[0].repos_url);
    });
  });
});