0

我正在尝试将图像文件从服务器传输到客户端,但是我的 javascript 回调在流关闭之前变得活跃我这样做是因为在传统的渲染 json 中发送它:超时并且无论如何都需要很长时间。流所需的时间要少得多,但在回调触发之前我无法获取所有数据。

控制器代码

   def mytest
    image=ImageList.new(AssistMe.get_url(image_url))
    response.stream.write image.export_pixels(0, 0, image.columns, image.rows, 'RGBA').to_s
    response.stream.close
   end

javascript

 var getStream, runTest;

 runTest = function() {
 return $.post('/dotest', getStream);};

 getStream = function(params) {
    return document.getElementById('whatsup2').innerHTML = 
  "stream is here " +     params.length;};

响应是一个数组,我可以通过在前面添加一个“[”并在末尾添加一个“],['finish'] 来使其成为一个数组数组,以便能够检测到数据的结尾,但我没有'无法弄清楚如何让javascript等到流结束才能运行。我假设我需要设置某种杆来检查结束,但是如何将它附加到回调?

4

1 回答 1

0

好的,这是一个很好地描述了这一点的博客

博客

但我决定放弃流并使用 .to_s。由于您可以更严格地执行多个操作

渲染 object.method.method.to_s 您可以获得使用流而不复杂的所有服务器端好处。如果您有一个缓慢的过程,您需要重叠客户端和服务器操作,请访问博客并执行此操作。否则 to_s 很好地涵盖了它

于 2014-04-13T16:54:17.127 回答