我有轮询问题。我使用setInterval每20秒轮询一次信息,并且具有单击事件,这些事件在触发时会将对象传递给方法。当我点击一个按钮并且在轮询重新启动的同时触发事件时,问题就出现了。如果发生这种情况,传递的对象是未定义的,这是有道理的,因为当我们重新开始轮询时,信息会被刷新。所以问题是,当setInterval重新启动时,如何/阻止事件被触发?
由于
答案 0 :(得分:1)
在刷新页面上的数据时,显示一些虚拟代码来说明队列的概念:
$(function() {
var isRefreshing = true;
var queue = [];
setInterval(function() {
isRefreshing = true;
$.ajax({
/*
settings
*/
success: function() {
isRefreshing = false;
//process queue
var item;
while(item = queue.pop()) {//if order matters use shift
worker(item);
}
}
});
}, 20*1000);
var worker = function(/*params*/) {
//stuff
}
$("#my-element").click(function() {
var data = {};
if(isRefreshing) {
queue.push(data)
} else {
worker(data);
}
});
});