- 发请求上报
axios.post(url, data);
问题:在页面卸载或者刷新的时候上报,请求会在浏览器关闭或者重新加载的时候被cancel掉,导致上报失败。
如果把ajax请求改为同步请求就可以保证一定能发送到服务器。由于fetch
和axios
都不支持同步请求,如果使用 XMLHttpRequest
发送同步请求,会阻塞页面关闭或者重新加载的过程,影响用户体验。
- sendBeacon
navigator.sendBeacon(url, data);
可以保证数据有效送达,且不会阻塞页面的卸载或加载
网友评论