我在Promise.all
中使用了一系列http请求。问题是,当Promise.all
满足时,console.log(values);
会显示原始dealers
数组,而不是已解析的http请求响应对象。为什么我没有在Promise.all
中获得已解决的http请求?
function getDealer(regionMarketDealer) {
var params = {
url: API_BASE_URI + 'service/ppv/' + regionMarketDealer,
method: 'GET'
};
return $http(params);
}
function getAllMarketDealers(dealers) {
var dealerHttpRequests = dealers.filter(function(dealer) {
if (dealer.name !== 'All') {
var promise = getDealer(dealer.name);
return promise;
} else {
return false;
}
});
Promise.all([dealerHttpRequests])
.then(function(values) {
console.log(values);
});
}
答案 0 :(得分:1)
.filter用于通过在函数中返回true或false来过滤数组,然后使用过滤结果创建一个新数组。
如果您想创建已过滤数组的承诺,则应使用.map并返回承诺
function getDealer(regionMarketDealer) {
var params = {
url: API_BASE_URI + 'service/ppv/' + regionMarketDealer,
method: 'GET'
};
return $http(params);
}
function getAllMarketDealers(dealers) {
var dealerHttpRequests = dealers.filter(function(dealer) {
return dealer.name !== 'All';
})
.map(function(dealer) {
return getDealer(dealer.name);
});
Promise.all(dealerHttpRequests)
.then(function(values) {
console.log(values);
});
}