gpt4 book ai didi

javascript - $q.all 为所有值返回 undefined

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:31:44 26 4
gpt4 key购买 nike

我正在尝试等待 3 个 promise ,但 $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有了代码,任何人都可以阐明问题所在吗?

最佳答案

你不应该在 get 方法返回的 promise 对象上做 .promise,因为你已经返回了 promise 表单 get 方法。

$q.all([a, b, c])

When you're doing a.promise, b.promise & c.promise they all becomes undefined & then $q.all array become $q.all([undefined, undefined, undefined]) passing them to $q.all will give undefined result.

关于javascript - $q.all 为所有值返回 undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35548446/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com