gpt4 book ai didi

javascript - 如何在页面加载后订阅 channel - ActionCable、DelayedJob

转载 作者:行者123 更新时间:2023-11-27 22:43:25 25 4
gpt4 key购买 nike

我有一个带有后台作业的 Controller 来启动 ActionCable 订阅:

  def result
LinkBroadcastJob.perform_later(links)
end

它执行此操作来流式传输链接:

  def perform(links)
links.each do |link|
ActionCable.server.broadcast "link_channel", html: render_link(link)
end
end

我在布局中有一个带有 div id="here"的 View 。

在我的文件 javascript/channes/link.coffee.js 中,它应该将所有链接附加到 div。

  App.link = App.cable.subscriptions.create { channel: "LinkChannel" },
received: (data) ->
$("#here").append(data.html)

此代码的问题是订阅在页面完全加载之前开始 - 因此第一个链接不会显示并且丢失。

我可以通过延迟作业和一些设定时间(5秒)来解决它,但这不是最好的体验,我不知道用户加载整个页面需要多快。我也尝试在创建订阅之前使用 $(document).load 进行操作,但没有成功。

加载 div 标签后执行订阅的最佳方式是什么?

最佳答案

您应该将客户端代码放入 turbolinks:load 中:

jQuery(document).on 'turbolinks:load', ->
App.link = App.cable.subscriptions.create { channel: "LinkChannel" },
received: (data) ->
$("#here").append(data.html)

关于javascript - 如何在页面加载后订阅 channel - ActionCable、DelayedJob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38598312/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com