Rails远程JSON调用阻塞控制器线程

时间:2014-12-06 13:08:52

标签: javascript ruby-on-rails ruby

我正在对我的控制器中的远程API执行HTTP请求,例如:

@results= JSON.load(open("http://someendpoint/whatever.json")) 

然后我通过迭代响应中提供的结构在我的视图中呈现响应的内容:

<% @results['result'].each do |result| %>$

从技术角度来看,这可以100%罚款。问题是控制器中的初始JSON加载似乎阻塞了控制器的线程(在呈现页面之前)。页面上有其他信息我想快速加载(即没有控制器线程阻塞)。基本上我想做的是异步发出HTTP请求,然后通过回调呈现JSON结构。如果能让事情变得更容易,我可以把信息放在一个部分。

我绝对可以使用类似XMLHttpRequest的东西将此结果(带有插值的HTML元素)连接成一个字符串,然后只使用DOM插入方法将数据放入视图中。所以,我想我的问题是:

是否有一种很好的方法可以异步执行此操作,例如使用Javascript回调来从XMLHttpRequest中声明的变量中呈现部分?在视图中声明变量然后在局部渲染变量是不是很糟糕?这对我来说似乎是糟糕的设计。我基本上不想在XHR请求之后生成一个长HTML字符串并将其注入DOM,因为它似乎“马虎”。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

将@results放在它自己的控制器动作中并使用它自己的端点并通过AJAX加载它会不会更简单吗?