sequential promise 例2

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 getRepoUrl(url) {
  return getData(url).then(function(user) {
    return user.items[0].repos_url
  })
}

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

var sequence = Promise.resolve();
keywords.forEach(function(keyword) {
  var searchAPI = api + keyword
  sequence = sequence.then(function() {
    return getRepoUrl(searchAPI);
  }).then(getRepoName);
});