18

在用户首次登录后,我正在使用 Sidekiq 工作人员完成对 Facebook 的一些请求。通常,该任务大约需要 20 秒左右。

同步完成后,我想使用 ajax 请求将一些信息加载到页面上,但不确定使用 Javascript 检查作业是否完成的最佳方法。

一种可能性是配置 Sidekiq 工作程序以在完成其余作业后设置 cookie。然后我可以使用 setTimeout 函数在调用加载函数之前继续检查 cookie。但我不确定这是否是最好的方法。我可以改用 Redis 吗?

4

2 回答 2

1

保罗,最初你必须看看这个PubSub on Rails 教程

这将是您在后端发生/完成异步事情时通知用户的更好解决方案。

提示:如果您使用的是 heroku,您将拥有许多抽象这种复杂性的库。

于 2015-05-06T13:20:03.057 回答
1

保罗,我会把你的顾虑分开。我假设 sidekiq 工作人员使用一些 rails activerecord 模型向 facebook 发送一些信息。当 facebook 请求成功完成时,我会将该模型上的标志设置为 true。

然后,您可以在 js 中设置一个 setTimeout 来轮询数据库中的更改......或者您可以使用 Web 套接字来获得更快、更自动的响应。我过去使用过一个名为Pusher的库。它很容易与 rails 集成,并提供非常简洁的 UI。

于 2015-05-11T01:46:45.247 回答