我在這裏遇到問題。我需要在關閉或刷新時執行註銷,這意味着當客戶離開網頁或關閉瀏覽器/選項卡時。我創建了一個添加到我的表單中的指令,它應該調用註銷功能(其中包括REST調用我們的後端,這將觸發Siteminder註銷)。 REST調用有時會執行,但主要被取消。 console.log消息幾乎從不出現。AngularJS註銷關閉或刷新 - REST服務調用取消
.directive('gcdmAutomaticLogoutOnClose', function($rootScope,
$window, MyLoginService){
return {
restrict: 'A',
scope: true,
controller: function($element){
$window.onbeforeunload = function(){
return MyLoginService.logout().then(function(){
console.log("Logout complete");
return null;
});
}}
}
});
任何想法?
但是你假設onbeforeunload將等待註銷來得到解決?一旦解決了,爲什麼還要等待回調結束? –
這可能是原因。但是,任何想法如何做到這一點? –
我不確定onbeforeunload是否等待承諾。但如果是這樣,只需創建另一個承諾,並在註銷許諾的成功回調中解決它;並使onbeforeunload等待第二個承諾。 –