Мой Javascript должен отправить некоторые данные на сервер, когда страница закрывается, что я сейчас делаю с синхронным запросом AJAX (SJAX?) В 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();
}
}
Будет ли это работать? Есть ли потенциальные проблемы с этим методом?