2011-04-14 103 views
1

已更新:jquery輪詢解決方案

我試圖讓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> 

回答

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/

+0

謝謝,這可能會工作,但我只是注意到,重試,無論是在你的例子,甚至示例代碼不起作用。它返回一個404,所以它沒有做任何事情的成功,但它不會重試,因爲它應該。 – holden 2011-04-14 10:28:03

+0

您的代碼中是否有重試功能?我不是100%確定你正在使用哪個外部插件庫。 – 2011-04-14 10:43:57

+0

使用jquery智能輪詢https://github.com/jeremyw/jquery-smart-poll/blob/master/lib/jquery.smart-poll.js – holden 2011-04-14 10:46:40