我是Rails 4的新手,我想延迟HTTP响应。
我认为'respond_to‘方法能够响应HTTP。
但是,当我移除'respond_to‘方法时,rails控制器会自动响应请求。
下面是我的第一步。
在这个步骤中,响应是自动执行的,尽管没有"respond_to“方法。
我能推迟答复吗?你能解释一下rails中的请求响应操作吗?
谢谢..。
发布于 2014-08-11 11:06:18
Rails默认呈现响应的主要原因是因为文件上是这么说的。Rails遵循‘约定高于配置’的理念,这意味着它试图帮助您将编写的代码保持在最低限度。大多数情况下,您希望您的控制器操作呈现视图,因此Rails会为您提供此功能。
您可以使用许多技术来延迟响应。最简单的方法是使用方法引入延迟:
class AppController < ApplicationController
def subaction
sleep 3 # Wait for 3 seconds before responding
end
end在测试应用程序在缓慢的互联网连接上的行为时,这可能很有用,但在生产代码中应该避免使用。快速的应用程序会让用户开心。
您还可以使用Rails 4.0.2中引入的模块。它允许您将数据流到客户端,但使用该流可能很棘手。jQuery在触发回调之前等待响应完成,因此您必须通过用别的东西来处理流。
这与正在出现的流媒体标准Websockets类似。Rails中有提供的一些支助 对于websockets,但浏览器并不普遍支持它。
另一种选择是将延迟切换到前端。在延迟之后,您可以使用JavaScript的setTimeout或setInterval调用一些代码:
setTimeout(function() {
alert("I run once, after 4 seconds");
}, 4000);
setInterval(function() {
alert("I run every two seconds");
}, 2000);如果您试图检查更新,您可能会尝试使用setInterval,但您可能会发现使用setTimeout来安排对服务器的一次性检查更加灵活。然后,您可以包含来自服务器的时间延迟,该延迟指定在再次询问之前等待多长时间。
https://stackoverflow.com/questions/25236476
复制相似问题