首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我可以延迟rails中的HTTP响应吗?

我可以延迟rails中的HTTP响应吗?
EN

Stack Overflow用户
提问于 2014-08-11 05:39:20
回答 1查看 2.2K关注 0票数 1

我是Rails 4的新手,我想延迟HTTP响应。

我认为'respond_to‘方法能够响应HTTP。

但是,当我移除'respond_to‘方法时,rails控制器会自动响应请求。

下面是我的第一步。

  1. 查看发送HTTP请求 index.html.erb var ready =function=function(这是函数);} var aquery =$.ajax{ $.ajax({ type:"POST",url:"app/subaction",});}$(Document).on(‘就绪页:load’,aquery);
  2. 在控制器中接收HTTP请求 类AppController < ApplicationController def子动作(这里没有.)端端
  3. subaction.js.erb $(‘#div_id’).empty().append(“完全响应.”);

在这个步骤中,响应是自动执行的,尽管没有"respond_to“方法。

我能推迟答复吗?你能解释一下rails中的请求响应操作吗?

谢谢..。

EN

Stack Overflow用户

回答已采纳

发布于 2014-08-11 11:06:18

Rails默认呈现响应的主要原因是因为文件上是这么说的。Rails遵循‘约定高于配置’的理念,这意味着它试图帮助您将编写的代码保持在最低限度。大多数情况下,您希望您的控制器操作呈现视图,因此Rails会为您提供此功能。

您可以使用许多技术来延迟响应。最简单的方法是使用方法引入延迟:

代码语言:javascript
运行
复制
class AppController < ApplicationController
   def subaction
     sleep 3 # Wait for 3 seconds before responding
   end
end

在测试应用程序在缓慢的互联网连接上的行为时,这可能很有用,但在生产代码中应该避免使用。快速的应用程序会让用户开心。

您还可以使用Rails 4.0.2中引入的模块。它允许您将数据流到客户端,但使用该流可能很棘手。jQuery在触发回调之前等待响应完成,因此您必须通过用别的东西来处理流。

这与正在出现的流媒体标准Websockets类似。Rails中有提供的一些支助 对于websockets,但浏览器并不普遍支持它。

另一种选择是将延迟切换到前端。在延迟之后,您可以使用JavaScript的setTimeoutsetInterval调用一些代码:

代码语言:javascript
运行
复制
setTimeout(function() { 
    alert("I run once, after 4 seconds");
}, 4000);
setInterval(function() { 
    alert("I run every two seconds");
}, 2000);

如果您试图检查更新,您可能会尝试使用setInterval,但您可能会发现使用setTimeout来安排对服务器的一次性检查更加灵活。然后,您可以包含来自服务器的时间延迟,该延迟指定在再次询问之前等待多长时间。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25236476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档