我在这里遇到问题。我需要在关闭或刷新时执行注销,这意味着当客户离开网页或关闭浏览器/选项卡时。我创建了一个添加到我的表单中的指令,它应该调用注销功能(其中包括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等待第二个承诺。 –