0

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

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

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

4

3 回答 3

2

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

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();

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

于 2012-10-25T10:10:39.953 回答
0

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

function doSomething() {

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

}

doSomething();

setInterval(doSomething, 15000);
于 2012-10-25T10:12:19.600 回答
0

怎么样:

function immediatePoll(f, interval) {
    f();
    setInterval(f, interval);
}

immediatePoll(function(){
        $.ajax({ url: "aaa.com",
            success: function(data){
            showUpdate(data);
          }, dataType: "text"});
        }, 15000);
于 2012-10-25T10:12:28.017 回答