我已经在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存在一些问题。
@ themyth92您是否尝试过我的解决方案?
—
Ilan Frumer 2014年
我已经尝试过,两种方法都适用于我的情况。但我会将@Llan Frumer作为正确答案。真的谢谢你们
—
themyth92
您为什么要承诺兑现现有的承诺?$ http已经返回一个承诺。$ q.defer的使用是多余的。
—
皮特·阿尔文
这是
—
克里斯托夫•鲁西
deferred
不是deffered
:)
then(datas)
吗?试试push
这个:promises.push(deffered);