在node.js express中按部分发送数据

sas*_*hka 7 node.js express

我正在搜索网络和文档的node.js express模块,似乎没有办法按部分发送数据.我有一个渲染的文件不是很快,我想在渲染一切之前发送它的一部分.

所以这是我的问题:

  1. 是否有response按部件发送数据的方法?
  2. 这是什么response.end()
  3. 如果没有办法按部分发送数据 - 背后的理由是什么?如果这是真的,我会说它看起来比非阻塞更具阻塞性.如果先前提供数据,浏览器可以更快地加载信息.

示例简化代码:

app.get(..) {
  renderFile(file, function(data) {
    response.send(data);
  });
  response.end();
)
Run Code Online (Sandbox Code Playgroud)

这段代码只发送第一块数据.我检查了 - 数据正确地给出并且回调被多次调用.

当然,我可以将数据附加到一个变量然后写入,response.send(data);但我不喜欢这种方法 - 它不是它应该工作的方式.

Bra*_*rad 13

response对象是可写流.只需写入它,Express甚至会自动为您设置分块编码.

response.write(chunk);
Run Code Online (Sandbox Code Playgroud)

如果创建此"文件"的任何内容都将其自身显示为可读流,您也可以使用它. http://nodejs.org/api/stream.html