【问题标题】:How to start polling immediately?如何立即开始投票?
【发布时间】:2012-10-25 10:08:55
【问题描述】:

我正在尝试使用轮询来进行一次每隔 15 秒执行一次的小检查。

setInterval(function(){
            $.ajax({ url: "aaa.com",
                success: function(data){
                showUpdate(data);
              }, dataType: "text"});
            }, 15000);

但这意味着在轮询开始之前有 15 秒的初始延迟,这在我的情况下是不希望的。 如何强制投票立即开始?

【问题讨论】:

    标签: javascript polling


    【解决方案1】:

    当简单的解决方案完成工作时,不要寻找聪明的解决方案:

    function check() {
       $.ajax({ url: "aaa.com",
         success: function(data){
         showUpdate(data);
       }, dataType: "text"});
    }
    check();
    setInterval(check, 15000);
    

    或者,我通常更喜欢

    function check() {
       $.ajax({ url: "aaa.com",
         success: function(data){
            showUpdate(data);
            setTimeout(check, 15000);
       }, dataType: "text"});  
    }
    check();
    

    因为在延迟响应的情况下不会有一堆调用。

    【讨论】:

      【解决方案2】:

      无需考虑使用回调函数来处理调用之间的延迟的稍微复杂一点的想法,最简单的方法是将函数移出命名函数,然后在第一次手动调用它

      function doSomething() {
      
      $.ajax({ url: "aaa.com",
                      success: function(data){
                      showUpdate(data);
                    }, dataType: "text"});
      
      }
      
      doSomething();
      
      setInterval(doSomething, 15000);
      

      【讨论】:

        【解决方案3】:

        怎么样:

        function immediatePoll(f, interval) {
            f();
            setInterval(f, interval);
        }
        
        immediatePoll(function(){
                $.ajax({ url: "aaa.com",
                    success: function(data){
                    showUpdate(data);
                  }, dataType: "text"});
                }, 15000);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-10-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-05-17
          • 2017-02-09
          相关资源
          最近更新 更多