寻找将其块转换为字符串的nodejs流模块

时间:2013-07-17 04:00:11

标签: node.js stream

我在过去几周一直在使用节点流,我发现使用一些现成的流模块(来自github / substack,github / mikeal和github / Raynos)比直接使用流方法更容易

有一件事可以逃避我:

当您知道没有更多数据到来时,从可读流中提取数据的最简单方法是什么?

我认为最简单的方法是将可读流传输到可写流中 将公开一个方法(或属性),它返回已写入其中的所有数据。

以下是我将如何使用它来提取在生成的stderr中捕获的所有数据的示例:

var spawn = require('child_process').spawn,
    proc = spawn('some_command'),
    plug = require('the-stream-module-i-am-looking-for');

buffer = plug.buffer();
proc.stderr.pipe(buffer);
proc.on('exit', function() { console.log(buffer.getdata()); }

我查看了来自Raynos/buffer-streammikeal/morestreams BufferedStream,但他们的目标似乎不同。

我知道捕获所有这些数据并不理想 - 偶尔会有必要。 我也明白,我可以实现我想写的简单代码,或者

  1. 实现_read函数以捕获/连接传入 块变成字符串
  2. (经典样式)侦听'data'事件 做同样的事情
  3. 事后进入流中并加入 块变成字符串
  4. 但是上面的所有内容看起来都像是一个代码,现在必须由成千上万的人编写成千上万次。希望其中一个将这几行代码抽象为单个模块函数。或者有一些我可能错过的更简单的东西 - 正如我所提到的,我仍然不相信我理解nodejs流。

1 个答案:

答案 0 :(得分:2)

我认为Max Ogden的node-concat-stream做了你所描述的。