簡體   English   中英

拒絕解決承諾未實現

[英]Rejected resolve promise not caught

我正在從這篇文章和這個答案中進行部分工作。

我有這條路線:

.state('barcodeQuery', {
    url:'/barcode',
    templateUrl: templatePath + '_BarcodeQuery.html',
    controller: 'BarcodeQueryCtrl',
    controllerAs: 'vm',
    requireADLogin: true,
    resolve: {
        user: 'user',
        access: function(user){return user.isAdmin().$promise}
    }
})

user.isAdmin看起來像這樣:

isAdmin: function() {
    return this.getProfile().then(function(data){
        // then return the response.
        if(data.isadmin) {
            return true;
        }
        else {
            return $q.reject(false);
        }
    });
},

據我所知,一切都到此為止。 isAdmin()確實會返回正確的響應,具體取決於用戶。

事情開始在這里出錯:

$rootScope.$on("$stateChangeError", function (event, current, previous, rejection) {
    console.log("Is this thing on?");
});

如果.isAdmin()拒絕了諾言,應該有一個$stateChangeEror對嗎? 但是在我的代碼中,這不會發生。 永遠不會到達console.log("Is this thing on?")行。 沒有錯誤,或任何東西。 該頁面僅呈現正常的效果。

我懷疑我在某處的承諾中被犯規了(那總是我被犯規的地方),但是我沒有看到。

有什么幫助嗎? 謝謝。

我發現了問題:

access: function(user){return user.isAdmin().$promise}

應該是這樣的:

access: function(user){return user.isAdmin()}

我在上面鏈接的帖子聲稱我需要有$promise來確保resolve等待函數返回它的promise,但事實並非如此。

暫無
暫無

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

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