轮询每10个seonds(Polling every 10 seonds)

2019-10-29 03:38发布

在下面的代码,我有这将创建一个轮询循环,将火过每10秒获得来自服务器的“作业状态报告”的期望。 现在看来,这是创造超过每秒100个电话。

我得到了我的教育从这个优秀的文章 ,但我似乎被误读了。

function UpdateEstimates() {
var request = { jobID: ExportVM.get("ticketID") };
var jqxhr = $.ajax({
    type: "GET",
    url: AppGlobals.serverURL + "GetJobStatus",
    data: request,
    contentType: "application/json; charset=utf-8",
    complete: UpdateEstimates,
    timeout: 10000,
    dataType: "json"
});
jqxhr.done(function (data) { NewEstimates(data); });
jqxhr.fail(function (data) { alert('new estimates request failed'); });

}

电话是非常低的开销,这样我就可以很容易地处理每秒钟更新一次,但我真的不喜欢连续100 /秒的速率非常多。 是否有某种方式来将延迟引入呼叫循环?

Answer 1:

超时在$就不是做你真正的想法。 它只是规定了特定的呼叫(最大允许时间)的超时时间。 你将不得不在setTimeout函数来包装这个。



Answer 2:

我建议重新触发的“完整的”钩超时。 在这种方式下,你防止重叠的REC t。

撕裂的“超时”帕拉姆关 - 为@ tomca32解释超时是关于将采取太长的REQ。

这将是这样的:

function UpdateEstimates() {
var request = { jobID: ExportVM.get("ticketID") };
var jqxhr = $.ajax({
    type: "GET",
    url: AppGlobals.serverURL + "GetJobStatus",
    data: request,
    complete: scheduleUpdEstimates,
    contentType: "application/json; charset=utf-8",
    dataType: "json"
});
jqxhr.done(function (data) { NewEstimates(data); });
jqxhr.fail(function (data) { alert('new estimates request failed'); });


function scheduleUpdEstimates(){
    setTimeout(function(){ UpdateEstimates(); }, 10000);
}


文章来源: Polling every 10 seonds