我希望浏览器保持页面打开,直到发送 ajax 请求。这就是我想象的样子
var requestsPending = 0;
window.onbeforeunload = function() {
showPleaseWaitMessage();
while(requestsPending > 0);
}
// called before making ajax request, atomic somehow
function ajaxStarted() {
requestsPending++;
}
// called when ajax finishes, also atomic
function ajaxFinished() {
requestsPending--;
}
不幸的是,JS 不做多线程。据我了解,回调(ajaxFinished)永远不会被执行,因为浏览器会尝试等到while循环完成来执行它,所以它会永远循环。
这样做的正确方法是什么?有没有办法强制 JS 评估其待办事项列表中的下一件事,然后返回到 while 循环?或者一些语法来“加入”一个ajax调用?我正在为我的 ajax 使用 DWR。
谢谢,-马克斯