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 2014 년
기존 약속을 약속하는 이유는 무엇입니까? $ http는 이미 promise를 반환합니다. $ q.defer 사용은 불필요합니다.
—
Pete Alvin
그것은 것입니다
—
크리스토프 후씨
deferred
하지 deffered
:)
then(datas)
? 그냥push
이것을 시도하십시오 :promises.push(deffered);