【问题标题】:AngularJS reject a promise in success callbackAngularJS 在成功回调中拒绝承诺
【发布时间】:2015-02-21 03:37:56
【问题描述】:

我正在使用$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");
});

这可能吗?如何?有更好的方法吗?

【问题讨论】:

  • 您可以添加第三个承诺并解决或拒绝它
  • 不要使用success 回调。使用then!

标签: javascript angularjs promise angular-promise


【解决方案1】:

这实际上比评论建议的要简单,因为 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");
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-25
    • 1970-01-01
    相关资源
    最近更新 更多