我有一个Angular 4应用程序,我想在用户关闭页面(浏览器的窗口或选项卡)时调用注销功能。
这是我的注销功能:
let currentUser: User = JSON.parse(localStorage.getItem('currentUser'));
let headers = new Headers({ 'Authorization': 'Basic ' + btoa(currentUser.login + ":" + currentUser.password),
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Headers': 'access-control-allow-headers, access-control-allow-origin, content-type, authorization'
});
let opts = new RequestOptions();
opts.headers = headers;
return this.http.get(this.route + 'UserLogout', opts).map((response: Response) => response.json());
}
Run Code Online (Sandbox Code Playgroud)
在我的app.component.ts中,我有:
@HostListener('window:beforeunload', ['$event'])
beforeUnloadHander(event) {
this.authenticationService.logoutOnClose().subscribe(res=> {
localStorage.removeItem('currentUser');
});
}
Run Code Online (Sandbox Code Playgroud)
但是窗口是关闭的,请求从未完成。我想我需要同步执行请求,但我不知道该怎么做。
你有想法吗 ?
编辑 我尝试使用jQuery:
ngOnDestroy(){
let currentUser: User = JSON.parse(localStorage.getItem('currentUser'));
$.ajax({ url: 'myURL',
beforeSend: function(request) {
request.setRequestHeader("Authority", 'Basic ' + …Run Code Online (Sandbox Code Playgroud)