我有投票问题要问你。我使用 setInterval 每 20 秒轮询一次信息,并且在触发时单击事件,它们将对象传递给方法。当我单击一个按钮并且事件在民意调查重新启动的同时触发时,问题就出现了。如果发生这种情况,传递的对象是未定义的,这是有道理的,因为当我们重新启动轮询时,会刷新信息。所以问题是,当 setInterval 重新启动时,如何/可以“阻止”事件触发?
谢谢
我有投票问题要问你。我使用 setInterval 每 20 秒轮询一次信息,并且在触发时单击事件,它们将对象传递给方法。当我单击一个按钮并且事件在民意调查重新启动的同时触发时,问题就出现了。如果发生这种情况,传递的对象是未定义的,这是有道理的,因为当我们重新启动轮询时,会刷新信息。所以问题是,当 setInterval 重新启动时,如何/可以“阻止”事件触发?
谢谢
当您刷新页面上的数据时,将显示一些虚拟代码来说明队列的概念:
$(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);
}
});
});