方法一:使用Navigator sendBeacon进行请求Navigator.sendBeacon()
navigator.sendBeacon()
Navigator.sendBeacon() - Web API 接口参考 | MDN
方法可用于通过 HTTP POST 将少量数据 异步 传输到 Web 服务器。
缺点: 无法配置请求头导致请求424 目前我还不会配置
方法二:使用fetch() 的 keep-alive:true 进行请求
window.addEventListener('beforeunload', (e)=>{
//navigator.sendBeacon(`******`,data)
fetch(`*****`,{
keepalive:true,
headers:{
Authorization:'Bearer ' + store.getters.access_token,// token
'TENANT-ID':store.getters.TENANT_ID,
VERSION:store.getters.VERSION
}
})
})
缺点:不清楚为啥会多次调用 可能是多次进入这个页面没有remove监听事件
就是因为没有remove监听事件vue项目中 在beforeDestroy中remove一下监听事件就不会出现重复请求的情况了