jquery轮询解决方案

时间:2011-04-14 09:44:41

标签: jquery ruby-on-rails jquery-plugins delayed-job polling

更新:

我正在努力让jquery智能投票为我工作。如果进程在前2秒内就绪,它可以正常工作,但如果没有,它不会按预期重试。我还希望在一定数量后重试时间。

https://github.com/hmert/jquery-smart-poll

<script type="text/javascript" charset="utf-8">
    $("#load_availables").toggle()
    $.poll(2000,function(retry){
        $.getScript('update_availables.js?job_id=<%= @bed.job_id %>&space_id=<%= @space.id %>', function(response, status){
            if (status == 'success')
                $("#load_availables").toggle()  //works fine if ready
            else
                retry()  //does not retry at all
         })
    })
</script>

3 个答案:

答案 0 :(得分:2)

var retryCount = 0;

$.poll(10000, function(retry){
     retryCount++;
     $.get('something', function(response, status){
       if (status == 'success')
         // Do something
       else
       {
         if(retryCount < 11) retry();
         else return;
       }
     })
   })

我没有机会测试这个 - 但是,从理论上讲,这应该可以胜任。

顺便说一句,作为旁注 - 如果你想提高JavaScript的效率,你正在做的事情,使用彗星服务器并使用慢速轮询。看看http://www.ape-project.org/

答案 1 :(得分:1)

看一下jquery插件Smartupdater

http://www.eslinstructor.net/smartupdater3/

它具备您需要的所有功能。

答案 2 :(得分:1)

迟到总比没有好!根据jQuery文档,get()ajax函数无声地失败。您将不得不处理.ajaxError()事件。 http://api.jquery.com/ajaxError/