Я пытаюсь ждать 3 обещаний, но $q.all
, как представляется, решить их сразу и возвращает undefined
для каждого отдельного значения, я не могу понять, почему:
this.doWork = function() {
var deferred = $q.defer();
var a = get('a'),
b = get('b'),
c = get('c');
$q.all([a.promise, b.promise, c.promise])
.then(function(values) {
deferred.resolve(new Test(values[0], values[1], values[2]));
}, function(reason) {
deferred.reject(reason);
});
return deferred.promise;
};
function get(param) {
var deferred = $q.defer();
$timeout(function() {
if (true) {
deferred.resolve({
value: param
});
} else {
deferred.reject({
message: "Really bad"
});
}
}, 1000);
return deferred.promise;
}
(в фактическом коде get()
использует $http
вместо $timeout
, конечно). Вот код Plnkr с кодом, может ли кто-нибудь пролить свет на то, что проблема?
Это действительно проблема (* вытягивает волосы *) - большое спасибо! –
@Aredhel Рад узнать, что .. Спасибо :) –