簡體   English   中英

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");
});

這可能嗎? 怎么樣? 還有更好的方法嗎?

這實際上比承諾承諾鏈中的評論要簡單。 如果你想鏈,但-你需要做的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");
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM