我对http请求有疑问。 这是我的老帖子。
How to get the multiple http request results in my example?
我稍微修改了我的代码。基本上我需要发出多个http请求并将它们存储到productGroup
数组中。但是,我收到undefined
返回的结果。
var buildProduct = function(product) {
var productGroup = [];
for(var i = 0; i < product.length; i++) {
var t = buildProductDetail(product, i)
productGroup.push(t);
}
console.log(productGroup) // I am getting undefined here.
return productGroup;
}
var buildProductDetail = function(product, i) {
var plan = {}
getProductDetail(product[i].id)
.then(function(data){
plan = {detail: data.detail, name:product[i].name}
console.log(plan) //has data
return plan;
})
}
var getProductDetail = function(id) {
return $http.get('/api/project/getProduct' + id);
}
答案 0 :(得分:1)
您未定义,因为您的buildProductDetail
函数未返回任何内容。
如果你想要一个干净的结果,可以使用$ q api同时解决几个promises。 https://docs.angularjs.org/api/ng/service/ $ Q
我认为它应该与看起来像这样的东西一起工作,但是如果没有一个plunkr我就无法测试。 注入$ q(nativejs中的native,不需要外部dep)然后:
var buildProduct = function(product) {
var productGroup = [];
for(var i = 0; i < product.length; i++) {
var t = buildProductDetail(product, i)
productGroup.push(t);
}
return $q.all( productGroup );
}
var buildProductDetail = function(product, i) {
var plan = {}
return getProductDetail(product[i].id) // don't forget the return there
.then(function(data){
plan = {detail: data.detail, name:product[i].name}
console.log(plan) //has data
return plan;
})
}