javascript - 根据我在 rails/react 应用程序上的 api 调用状态更新我的视图
问题描述
我有一个使用 react 作为前端的 Rails 应用程序。从我的 Rails 控制器中,我正在调用基于浏览器的 api。通过 Watir 和控制器内部的一些“放置”,我可以在终端内获取呼叫状态。例如,在我的终端中,我会看到“Loading 1%...”“Loading 10%”等...直到完成。我想要做的是向我的前端应用程序显示这个值。对 Rails 很陌生,不知道从哪里开始。为了点击 call_api(username) 方法,我从前端的按钮进行 Ajax 调用。到目前为止,一切都运行良好。我唯一想补充的是我在客户端的通话状态。
我曾尝试使用 gem gon,但问题是我的整个应用程序是基于我的根路由“/”所以如果例如我的 index 方法是这样的,而我的 call_api 方法是这样的
def index
@status = "started"
gon.watch.status = @status
end
def call_api(username)
@status = "new value for test"
gon.watch.status = @status
until @status == "Finished"
@status = @browser.span(class: "monoFont").text
puts "status" + @status
sleep 1
end
end
当我进入浏览器控制台并尝试 console.log(gon.status) 时,我仍然得到“started”的值,因为我的应用程序仍在索引路由上。可能有更好的方法。非常感谢任何有关如何进行的帮助和建议。谢谢
解决方案
如果我没记错的话,当 API 在网络上进行一些抓取时,您需要在视图中不断更新状态。所以我认为你可能需要网络套接字或类似的东西,因为你的 API 是连续运行的,你需要在你的视图中进行实时更新。看看网络套接字。
推荐阅读
- imagemagick - ImageMagick 在 alpha 为 0 时移除颜色(png)
- javascript - jQuery 动画在用户滚动时停止
- c - 开始 (^) 和结束 ($) 锚点不起作用
- actions-on-google - MediaResponse 不在手机上(自动)播放文件
- javascript - IOS javascript音量变化
- c# - 更改特定 JSON 值 (C#)
- spring-integration - Spring Integration 为多个生产者和消费者提供一个渠道
- ionic-framework - 无法通过 ionic 3 的 FileTransfer 插件将图像上传到 Cloudinary
- installation - 在 Debian 9 上安装自适应通信环境 (ACE)
- sql - SQL 数据透视表每列总计