【发布时间】:2013-01-08 21:41:47
【问题描述】:
我是 jQuery 新手,想用它每 3 秒从服务器检索一次数据。 Web 服务器每 3 秒以 JSON 格式发送数据。 JSON 数据包含一个数值数组字段 { "samples" : [10,15,-7,19,34,...] }。我编写了以下 jQuery ajax 请求,每 3 秒从服务器检索一次数据:
function getData() {
$.ajax({
url : 'http://example.com',
type: 'GET',
success : function(data) {
myData = data.samples;
setTimeout(getData, 3000);
},
dataType : 'json'
});
return myData;
}
但是,由于时间抖动,从服务器发送的数据可能不会每 3 秒准确更新一次。那么我应该如何编写 jQuery ajax 请求以避免可能的数据不连续性呢?也就是说,我希望返回的 myData 包含来自每个 getData() 调用的所有新数据数组元素,并且不包含由于可能的时序抖动而导致的重复或丢失的数据样本。
【问题讨论】:
-
你有什么数据可以唯一标识你的原子数据吗?这样,您可以发送最后检索到的数据的 id,并让服务器从下一个开始发送。
-
“定时抖动”是指你发出请求时服务器上的数据可能刷新稍慢或正在刷新?
-
否 没有从服务器发送的时间戳信息。通过“时间抖动”,任何情况都可能发生:服务器可能刷新稍慢于 3 秒,或者在您发出请求时正在刷新。