为了账号安全,请及时绑定邮箱和手机立即绑定

AngularJS $ q.all

AngularJS $ q.all

qq_笑_17 2019-10-24 11:08:40
我已经在angularjs中实现了$ q.all,但是我无法使代码正常工作。这是我的代码: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);    }这是我的控制器,它调用服务: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存在一些问题。
查看完整描述

3 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

问题似乎是您要添加deffered.promisewhen deffered本身就是您应该添加的承诺:


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


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

        }


查看完整回答
反对 回复 2019-10-24
  • 3 回答
  • 0 关注
  • 579 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信