setInterval不允许同时点击事件 - javascript

时间:2013-11-13 17:38:13

标签: javascript ajax setinterval polling

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

由于

1 个答案:

答案 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);
        }
   }); 
});