当用户关闭浏览器窗口时如何进行API调用?
//在卸载前执行的代码
@HostListener('window:beforeunload', ['$event'])
beforeunloadHandler(event) {
event.preventDefault();
console.log('--start--');
// this call is not completing
this.remediationService.saveTime();
console.log('---end---');
return false;
}
答案 0 :(得分:0)
今天的浏览器都没有“关闭”事件。
有一个onbeforeunload,但是在调用它时你不能做很多事情,特别是你不能在没有用户同意的情况下阻止窗口关闭,如果你从正在关闭的页面上尝试远距离操作将会失败
您可以使用一个小技巧,例如在onfeforeunload事件上触发警报并检查您的响应是否到来。如果不是,则再次发出警报,直到您的响应来临。
注意:在JS中,只有警报,提示才可以阻止执行。我不知道是否还有其他解决方案,但是我知道JS是单线程的,因此我们不能阻止执行。任何阻塞的调用,JS都会以异步方式自动执行。