如何解决我的http请求问题?

时间:2014-11-03 08:37:48

标签: javascript angularjs xmlhttprequest

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

1 个答案:

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