vue监听关闭页面 在关闭页面前发送axios请求 如何先发送请求 再关闭页面

现在碰到的问题就是关闭页面时axios请求总提交不了,请问有什么解决的方法么?

        window.addEventListener('beforeunload', function() {
      beforeUnloadTimestamp = new Date().getTime();
  })

  window.addEventListener('unload', function() {
    beforeUnloadTimestamp = beforeUnloadTimestamp || 0;
    localStorage.setItem('onload', new Date().getTime());
    // 测试chrome和ie11 得出,chrome,IE11 // 刷新时 chrome >=11ms ,ie11 >=2ms 左右, 在关闭时,chrome间隔在 >=2ms,IE11 >=3000ms
    if (isIE) {
      if (new Date().getTime() - beforeUnloadTimestamp > 500) {
        isClose = true;
      }
    } else {
      if (new Date().getTime() - beforeUnloadTimestamp < 5) {
        isClose = true;
      }
    }
    
    if (isClose) {
      axios.get('/au/logout').then(res => {
        window.sessionStorage.clear();
      });
      localStorage.setItem('close', new Date().getTime());
    }else{
      localStorage.setItem('refresh', new Date().getTime());
    }
  })
阅读 9.7k
2 个回答

没有。请求是异步的,unload 不会等你请求返回才继续。

可以将ajax请求改成同步请求,请求返回后再关闭页面

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题