首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Web Workers中的AJAX请求?

Web Workers中的AJAX请求?
EN

Stack Overflow用户
提问于 2012-09-27 04:22:28
回答 1查看 1K关注 0票数 0

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

当用户关闭页面时,我只在这里使用请求调用函数:

代码语言:javascript
复制
window.onbeforeunload = sendData;

但是当我每10秒发送一次数据时,问题就出现了。我发送的请求是同步的,而不是异步的(否则就不会发送onbeforeunload)。问题是,当每10秒发送一次数据时,这会增加用户界面的延迟。

代码语言:javascript
复制
setInterval(sendData,10000);

这就是我们所说的:

代码语言:javascript
复制
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,我必须使用synchronized )

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-27 04:27:31

为什么不让它每10秒异步一次,而让onbeforeunload同步一次呢?如下所示:

代码语言:javascript
复制
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);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12609744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档