AngularJS 在成功回调中拒绝承诺
AngularJS reject a promise in success callback
我正在使用 $q
检查两个资源的查询是否已解决。像这样:
$q.all([
ResourceA.get({}, function success(data) {
console.log("got A");
}).$promise,
ResourceB.get({}, function success(data) {
console.log('got B');
}).$promise
]).then(function() {
console.log("done");
});
问题是,我在每个 success
函数中收到的 data
可能不是我想要的,我想检查是否是这种情况,然后拒绝相应的承诺。喜欢:
$q.all([
ResourceA.get({}, function success(data) {
if (data.key !== "secret") {
// REJECT THE PROMISE
}
}).$promise,
ResourceB.get({}, function success(data) {
console.log('got B');
}).$promise
]).then(function() {
console.log("done");
});
这可能吗?如何?还有更好的办法吗?
这实际上比 promises 链中的评论建议的要简单。如果你想链接 - 你需要用 then
:
$q.all([
ResourceA.get({}).$promise.then(function(data){ // chain a then
if (data.key !== "secret") return $q.reject("Invalid key");
return data; // return same value if ok
}),
ResourceB.get({}, function success(data) {
console.log('got B');
}).$promise
]).then(function() {
console.log("done");
});
我正在使用 $q
检查两个资源的查询是否已解决。像这样:
$q.all([
ResourceA.get({}, function success(data) {
console.log("got A");
}).$promise,
ResourceB.get({}, function success(data) {
console.log('got B');
}).$promise
]).then(function() {
console.log("done");
});
问题是,我在每个 success
函数中收到的 data
可能不是我想要的,我想检查是否是这种情况,然后拒绝相应的承诺。喜欢:
$q.all([
ResourceA.get({}, function success(data) {
if (data.key !== "secret") {
// REJECT THE PROMISE
}
}).$promise,
ResourceB.get({}, function success(data) {
console.log('got B');
}).$promise
]).then(function() {
console.log("done");
});
这可能吗?如何?还有更好的办法吗?
这实际上比 promises 链中的评论建议的要简单。如果你想链接 - 你需要用 then
:
$q.all([
ResourceA.get({}).$promise.then(function(data){ // chain a then
if (data.key !== "secret") return $q.reject("Invalid key");
return data; // return same value if ok
}),
ResourceB.get({}, function success(data) {
console.log('got B');
}).$promise
]).then(function() {
console.log("done");
});