Angular 当我的应用程序即将关闭时,如何调用API
我想点击一个API来设置用户的最后活动时间。 但API并没有发挥作用。 由于API初始化和命中服务器需要时间,在API命中开始之前,应用程序被关闭 我在app.component.ts文件中尝试了此代码Angular 当我的应用程序即将关闭时,如何调用API,angular,angular-http,Angular,Angular Http,我想点击一个API来设置用户的最后活动时间。 但API并没有发挥作用。 由于API初始化和命中服务器需要时间,在API命中开始之前,应用程序被关闭 我在app.component.ts文件中尝试了此代码 @HostListener('window:beforeunload',['$event'])) 卸船前(事件){ 此._apiService.setLastActive({time:new Date().getTime()/1000}) .订阅(数据=>{ },err=>{ }) } 有人能
@HostListener('window:beforeunload',['$event']))
卸船前(事件){
此._apiService.setLastActive({time:new Date().getTime()/1000})
.订阅(数据=>{
},err=>{
})
}
有人能建议我什么时候调用API来设置用户的最后活动状态吗?请在退出组件的component.ts文件中使用
ngondstroy()
功能在Angular销毁指令/组件之前,它会进行清理。取消订阅观测值并分离事件处理程序以避免内存泄漏,并在Angular销毁指令/组件之前调用 如果您有未保存的更改。试试这个答案 刚刚遇到这个:。beforeunload似乎不支持异步,因此必须使用XMLHttpRequest来调用API 从另一个职位:
window.addEventListener("beforeunload", function (event) {
var client = new XMLHttpRequest();
client.open("POST", "http://url/to/endsession", false); // third parameter indicates sync xhr
client.setRequestHeader("Content-Type", "application/json");
client.send('{userId: "42"}');
console.log('done!!!'); // outputs when a response is received
});
使用javascript代码,可能对您有用
window.onbeforeunload = e => {
e.returnValue = 'Do you really want to leave this site?';
return dialogText;
};
尝试以下操作:beforeUnloadHander(event){this.\u apiService.setLastActive({time:new Date().getTime()/1000}).subscribe(data=>{return true},err=>{});return false;}此处有更多信息:提示用户离开站点。是否有其他方法不提示用户。当我关闭浏览器时,它不起作用。你可能想研究一些使用轮询的解决方案,因为依赖关闭前运行的代码可能会导致问题。如果浏览器/计算机意外关闭怎么办?请参阅