【问题标题】:jquery polling solutionjquery 轮询解决方案
【发布时间】:2011-04-14 09:44:41
【问题描述】:

更新:

我正在尝试让 jquery smart poll 为我工作。如果进程在前 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>

【问题讨论】:

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


    【解决方案1】:
    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/

    【讨论】:

    • 谢谢,这可能会起作用,但我只是注意到重试,无论是在您的示例中,还是在示例代码中都不起作用。它返回一个 404,所以它不会从成功中做任何事情,但它没有按应有的方式重试。
    • 你的代码中有重试功能吗?我不能 100% 确定您使用的是哪个外部插件库。
    • 响应为空,我发送的状态为 404,format.js { render :nothing => true, :status => 404 } 应该触发重试但不会。
    【解决方案2】:

    看看jquery插件Smartupdater

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-10-23
        • 2011-06-15
        • 2015-08-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多