方法
執行個體公開方法
periodically(callback_or_method_name = nil, every:, &block) 連結
週期性地在頻道上執行某個任務,例如更新線上使用者計數器、輪詢後端以取得新狀態訊息、傳送定期的「心跳」訊息,或進行一些內部工作並更新進度。
傳遞一個方法名稱或 lambda 引數,或提供一個區塊來呼叫。使用 every:
關鍵字引數指定呼叫間隔(秒為單位)。
periodically :transmit_progress, every: 5.seconds
periodically every: 3.minutes do
transmit action: :update_count, count: current_count
end
來源: 顯示 | 在 GitHub 上
# File actioncable/lib/action_cable/channel/periodic_timers.rb, line 31 def periodically(callback_or_method_name = nil, every:, &block) callback = if block_given? raise ArgumentError, "Pass a block or provide a callback arg, not both" if callback_or_method_name block else case callback_or_method_name when Proc callback_or_method_name when Symbol -> { __send__ callback_or_method_name } else raise ArgumentError, "Expected a Symbol method name or a Proc, got #{callback_or_method_name.inspect}" end end unless every.kind_of?(Numeric) && every > 0 raise ArgumentError, "Expected every: to be a positive number of seconds, got #{every.inspect}" end self.periodic_timers += [[ callback, every: every ]] end