0

我有投票问题要问你。我使用 setInterval 每 20 秒轮询一次信息,并且在触发时单击事件,它们将对象传递给方法。当我单击一个按钮并且事件在民意调查重新启动的同时触发时,问题就出现了。如果发生这种情况,传递的对象是未定义的,这是有道理的,因为当我们重新启动轮询时,会刷新信息。所以问题是,当 setInterval 重新启动时,如何/可以“阻止”事件触发?

谢谢

4

1 回答 1

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);
        }
   }); 
});
于 2013-11-13T17:46:24.693 回答