Я реалізував $ q.all у angularjs, але не можу змусити код працювати. Ось мій код:
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 Ви спробували моє рішення?
—
Ілан Фрумер
Я спробував, і обидва способи працюють на моєму випадку. Але я зроблю @Llan Frumer як правильну відповідь. Дуже дякую вам обом.
—
themyth92
Чому ти обіцяєш існуючу обіцянку? $ http вже повертає обіцянку. Використання $ q.defer зайве.
—
Піт Елвін
Це
—
Крістоф Руссі
deferred
не deffered
:)
then(datas)
? Спробуйте самеpush
так:promises.push(deffered);