递归ajax或setInterval(),哪一个更好?

时间:2014-03-06 01:35:57

标签: ajax recursion settimeout setinterval

我正在尝试获取消息表并将响应附加到先前提取的结果...

这是我尝试过的两种方法,但都失败了

1st:递归获取

function fetch(){
        $.ajax({ 
               url: url,
               type: "post",
               data:data,
               timeout: 3000,
               success: function(data){
                      $(selector).append(data);
                      setTimeout(function(){fetch()},3000);
               }
        })
}

第二名:setInterval()

   setInterval(function(){fetch()},3000);
   function fetch(){
                $.ajax({ 
                       url: url,
                       type: "post",
                       data:data,
                       timeout: 3000,
                       success: function(data){
                              $(selector).append(data);
                       }
                 })
    }

在几次成功的ajax调用之后,浏览器被冻结,控制台显示" net :: ERR_EMPTY_RESPONSE" " ERR_CONNECTION_TIMED_OUT"

请告知

谢谢

1 个答案:

答案 0 :(得分:0)

如果您想在成功或失败后进行递归调用,可以这样做

function fetch(url, selector){
    $.ajax({ 
       url:url,
       type:"post",
       data:data,
       timeout:3000,
       success:function(data){
           $(selector).append(data);
           fetch();
       },
       error:function(data){
           fetch();
       }
    });
}