首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Angularjs $q.all

Angularjs $q.all
EN

Stack Overflow用户
提问于 2014-01-23 22:28:25
回答 2查看 165.1K关注 0票数 106

我已经用angularjs实现了$q.all,但是我不能让代码工作。下面是我的代码:

代码语言:javascript
复制
UploadService.uploadQuestion = function(questions){

        var promises = [];

        for(var i = 0 ; i < questions.length ; i++){

            var deffered  = $q.defer();
            var question  = questions[i]; 

            $http({

                url   : 'upload/question',
                method: 'POST',
                data  : question
            }).
            success(function(data){
                deffered.resolve(data);
            }).
            error(function(error){
                deffered.reject();
            });

            promises.push(deffered.promise);
        }

        return $q.all(promises);
    }

这是我的控制器,它调用服务:

代码语言:javascript
复制
uploadService.uploadQuestion(questions).then(function(datas){

   //the datas can not be retrieved although the server has responded    
}, 
function(errors){ 
   //errors can not be retrieved also

})

我认为在我的服务中设置$q.all有一些问题。

EN

回答 2

Stack Overflow用户

发布于 2014-07-20 20:43:37

$http也是一个承诺,你可以让它变得更简单:

代码语言:javascript
复制
return $q.all(tasks.map(function(d){
        return $http.post('upload/tasks',d).then(someProcessCallback, onErrorCallback);
    }));
票数 36
EN

Stack Overflow用户

发布于 2014-01-24 01:23:11

问题似乎是,当deffered本身就是您应该添加的承诺时,您添加的是deffered.promise

尝试更改为promises.push(deffered);,这样就不会将未包装的promise添加到数组中。

代码语言:javascript
复制
 UploadService.uploadQuestion = function(questions){

            var promises = [];

            for(var i = 0 ; i < questions.length ; i++){

                var deffered  = $q.defer();
                var question  = questions[i]; 

                $http({

                    url   : 'upload/question',
                    method: 'POST',
                    data  : question
                }).
                success(function(data){
                    deffered.resolve(data);
                }).
                error(function(error){
                    deffered.reject();
                });

                promises.push(deffered);
            }

            return $q.all(promises);
        }
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21310964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档