上一次写项目遇到了一个vue关闭页面发出请求的需求,但是用vue自带的destoryed方法一直无法解决这个问题,请求一直发不出去,后来找到了解决方法,记录一下。
- 首先请求必须是同步的,不能是异步的,不然有可能请求没发出去,页面就已经关闭。
- 然后就是代码了,代码写在mouted里面,调用的其实还是原生的windows的方法。
mounted(){
//绑定页面退出事件
window.onbeforeunload= (e)=>{
e = e || window.event;
if (e) {
e.returnValue = '关闭提示';
}
this.delete()//调用自己的方法
// Chrome, Safari, Firefox 4+, Opera 12+ , IE 9+
return '关闭提示';
};
},
另外附上delete代码:
//同步请求删除载荷谱数组的方法
async delete(){
this.form2.uuids=this.form2.uuids.toString();//将载荷谱文件数组转成字符串
await firedelete(this.form2).then(res => {//这里需要用箭头函数,如果不用箭头函数里面的this就不是外面那个this
console.log(res);
})
},