Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 轮询和按需功能_Javascript_Jquery - Fatal编程技术网

Javascript 轮询和按需功能

Javascript 轮询和按需功能,javascript,jquery,Javascript,Jquery,我有一个JQuery函数来轮询服务器。我现在想在加载图标中添加一个onClick函数,这样,如果用户按下图标,它将根据需要刷新。 在我按下图标之前,轮询工作正常。然后它停止轮询,每次我按下图标,它就会产生双倍的呼叫量。第一次1,第二次2,第三次4,依此类推。我是JQuery新手,所以我不确定是否应该在上创建两个函数,一个用于轮询,另一个用于刷新 var DO_POLLING = { load: function doPoll(poll) { //This part of th

我有一个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方法执行绑定,另一个方法执行轮询,或者在重新绑定之前解除绑定处理程序

因此,简单的解决办法是

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

您的代码似乎没有进行轮询,因为它从来不会将
true
传递到
doPoll
方法。经过良好的定位,编辑以在初始调用中显示true。好的,请理解,简单的解决方案只有一半有效,因为一旦添加它,轮询就会停止,但这没关系,因为更好的解决方案是按照您的建议重新构造方法,以便轮询和绑定分别完成。