gpt4 book ai didi

ruby-on-rails - 向 ajax 进程指示延迟作业已完成

转载 作者:行者123 更新时间:2023-12-04 06:47:54 25 4
gpt4 key购买 nike

我有一个 Rails 3 应用程序,当用户点击页面时,它使用 delay_job 来获取一些数据(使用类方法)。
如何向 ajax 进程指示类方法已运行(以便我可以停止轮询)?

编辑:

澄清一下,我想知道 delay_job 何时运行,而不是 ajax 进程何时成功。然后我想将delayed_job完成状态传递给正在运行的ajax进程。

最佳答案

通常,执行此操作的最佳方法是在您的数据库中存储作业进度的指示。例如:

class User
def perform_calculation
begin
self.update_attributes :calculation_status => 'started'
do_something_complex
self.update_attributes :calculation_status => 'success'
rescue Exception => e
self.update_attributes :calculation_status => 'error'
end
end
end

所以当你排队工作时:
User.update_attributes :calculation_status => 'enqueued'
User.send_later :perform_calculation

您可以在 Controller 中查询作业的状态:
def check_status
@user = User.find(params[:id])
render :json => @user.calculation_status
end

然后轮询 ajax 进程可以简单地调用 check_status 来查看作业的进展情况,它是成功的还是失败的。

关于ruby-on-rails - 向 ajax 进程指示延迟作业已完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5042300/

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