【问题标题】:Force periodically_call_remote to fire immediately强制定期_call_远程立即触发
【发布时间】:2009-10-19 19:33:10
【问题描述】:

我有一个

periodically_call_remote

我想立即触发(就好像代码在没有 setTimeout 的情况下存在)以及定期调用。有没有使用 PCR 的好方法,还是我必须自己动手?

如果有帮助,我正在使用 jQuery/jRails。

【问题讨论】:

    标签: ruby-on-rails ajax


    【解决方案1】:

    总是有 onload 解决方案。

    在您定义body标签的视图中:

    <body onload="<%= remote_function( ==same options used with periodically_call_remote==) %>" >
    

    这将在加载时调用远程函数,并让与periodic_call_remote 相关的魔法以所需的时间间隔调用它。查看时钟如何在与 onload 开始的大致相同的时间相对于periodic_call_remote 间隔开始。你应该得到你想要的功能。

    【讨论】:

    • 好吧,这将称为 onclick,但我知道你的意思:P 我最终使用了 remote_function 解决方案。
    • 哎呀。我从其他一些代码中复制了 onclick 语句,却忘记将其更改为 onload。
    【解决方案2】:

    这不是一个完美的解决方案,但远程函数在第一毫秒被调用。

    def periodically_call_remote_starting_now(options = {} )
      page.call("starting_now_count = 0")
      periodically_call_remote ( options.merge(:frequency => 0.001, :condition => "++starting_now_count == 1"))
      periodically_call_remote (options)
    end
    

    【讨论】:

      【解决方案3】:

      好的,我没有足够的声誉来评论 KandadaBoggu 的帖子,所以写下我的评论作为答案。

      我最喜欢 KandadaBoggu 的响应,但必须进行一些更改才能使辅助方法工作。我想出的代码如下。如果我的更改不合适,请随意投反对票(但更好的是,发表评论并让每个人都知道原因)。我对 KandadaBoggu 代码的修改如下:

      def periodically_call_remote_starting_now(options = {})    
        result = ""
        result << javascript_tag("starting_now_count = 0;")
        result << periodically_call_remote(options.merge(:frequency => 0.001, :condition => "++starting_now_count == 1"))
        result << periodically_call_remote(options)
      end
      

      否则我会收到以下错误:

      undefined local variable or method `page' for #<ActionView::Base:0x7fc37a6e2658>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-03-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-16
        • 1970-01-01
        相关资源
        最近更新 更多