javascript - 轮询和点播功能

标签 javascript jquery

我有一个轮询服务器的 JQuery 函数。我现在想向加载图标添加 onClick 函数,以便如果用户按下该图标,它将按需刷新。 在我按下图标之前,轮询工作正常。然后它会停止轮询,每次我按下该图标时,它都会创建双倍的调用量。所以第一次 1,第二次 2,第三次 4,依此类推。我是一名 JQuery 新手,所以我不确定是否应该创建两个函数用于轮询和一个用于刷新。

var DO_POLLING = {

    load: function doPoll(poll) {
     //This part of the call is a PlayFramework spefic part but it works the same as vanila jquery
     var ajax = jsRoutes.controllers.AjaxApplication.getAjaxReceipts(ll).ajax ( {
      beforeSend : function () {
        //
      },
      success : function ( data ) {
        //
      },
      complete : function ( data ) {
        //
      },
      always : function ( data ) {
        if(poll){
          setTimeout(doPoll,30000);
        }
      },
      error : function ( ) {
        //
      }
    }
    );

    //This is called when the refresh icon is called
    $('#wid-id-2 i.fa-refresh').click( function() {
      doPoll(false)
    })
}
}

$(document).ready(function () {
   DO_POLLING.load(true);
});

最佳答案

每次调用 doPoll 方法时,您都会添加一个点击处理程序。

您需要重构对象,以便 init 方法将执行绑定(bind),另一个方法将执行轮询,或者在重新绑定(bind)之前取消绑定(bind)处理程序

所以简单的解决方案是这样做

$('#wid-id-2 i.fa-refresh').unbind('click').click( function() {
  doPoll(false);
});

关于javascript - 轮询和点播功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25037003/

相关文章:

php - 使用图像加载预加载 DIV

javascript - 卡在 Canvas /JS 动画中

javascript - 难以完成这个基于时间的代码片段

javascript - JSDoc 两次输出相同的变量

javascript - TinyMCE 插入内容

javascript - 如何测试调用 AJAX 函数而不使用 jasmine 触发它的函数?

javascript - jquery 仅在选择时显示 id 选项 {help}

javascript - 没有绝对位置的 Masonry (Pinterest) 样式布局(如 Google+)

javascript - 一旦 iframe 内容更改,jquery 事件

javascript - 是否可以将 SVG 对象的自定义属性设置为数字而不是字符串?