在下面的代码中,我希望这会创建一个轮询循环,每隔10秒就会触发一次以从服务器获取“作业状态报告”。它似乎每秒创造超过100个电话。轮询每10个seonds
我从这个优秀的article得到了我的教育,但我似乎在误读它。
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 /秒的速率非常多。有没有办法在呼叫循环中引入延迟?
以及您再次调用该函数权当它完成 - 我想你的'timeout'是 – 2013-05-03 17:57:21
一种误解'timeout'不耽误通话;它只是设置请求的最大时间。我会在'done()'里面使用'setTimeout(UpdateEstimates,10000)'。 – 2013-05-03 17:58:49
这不是长轮询的意思。你只是试图定期轮询。长时间轮询包括向服务器打开一个请求,服务器持有该请求,直到有数据返回给客户端。我已经相应编辑了。 – 2013-05-03 18:02:36