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