当页面关闭时,我的 Javascript 需要向服务器发送一些数据,我目前使用window.onbeforeunload
. 当然,这样做的问题是,如果我的服务器运行时间过长或网络连接中断,浏览器就会死机。
根据我的阅读,无法为同步 AJAX 请求指定超时,并且异步 AJAX 请求在window.onbeforeunload
. 我对如何解决这个问题的最佳猜测是使用异步请求,然后锁定浏览器一段时间以让请求完成:
window.onbeforeunload = function() {
doSomeAjax(); // asynchronous request
var now = new Date();
var time_limit = now.getTime()+2000; // 2,000 ms
while(now.getTime() < time_limit) {
now = new Date();
}
}
这行得通吗?这种方法有什么潜在的问题吗?