0

在我的 Web 应用程序中,用户在页面上所做的操作必须发送到我的数据库,因此我保存了最新的更改。

当用户关闭页面时,我只是在此处调用带有请求的函数:

window.onbeforeunload = sendData;

但是出现问题的地方是我每 10 秒发送一次数据。我确实发送我的请求同步而不是异步(或者它不会被发送onbeforeunload)。问题在于,当每 10 秒发送一次数据时,这会增加用户界面的延迟。

setInterval(sendData,10000);

这就是所谓的:

function sendData(){
     var xhr = new XMLHttpRequest();
     var localData = datatodatabase;
     xhr.open("POST", "handler.php", false);
     xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
     xhr.send("pack="+datatodatabase);
}

是否可以在 Web Worker 中添加它以使同步请求停止延迟其他一切正在发生的事情?

(正如我所说:我必须使用同步,因为onbeforeunload

4

1 回答 1

1

为什么不让它每 10 秒异步一次,而是onbeforeunload让它同步呢?像这样:

setInterval(function () {
    sendData(true);
}, 10000);

window.onbeforeunload = function () {
    sendData(false);
}

function sendData(async) {
    // Make the ajax call the specific way based on whether *async* is *true* or *false*

    // Probably eventually:
    xhr.open("POST", "handler.php", async);
}
于 2012-09-26T20:27:30.603 回答