0

ここ数週間、ノード ストリームを使用してきましたが、実際にストリーム メソッドを直接使用するよりも、(github/substack、github/mikeal、github/Raynos の) 準備ができているストリーム モジュールを使用する方が簡単であることがわかりました。

私を回避することが1つあります:

これ以上データが来ないことがわかっている場合、読み取り可能なストリームからデータを抽出する最も簡単な方法は何ですか?

最も簡単な方法は、その読み取り可能なストリームを、書き込まれたすべてのデータを返すメソッド (またはプロパティ) を公開する書き込み可能なストリームにパイプすることだと思います。

これを使用して、生成された 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-stream 、 mikeal/morestreamsの BufferedStream を見てきましたが、それらの目標は異なるようです。

そのようなすべてのデータをキャプチャすることは理想的ではないことを理解しています-時には必要ですが。また、単純なコードを書くことで目的を達成できることも理解しています。

  1. 受信チャンクを文字列にキャプチャ/連結する _read 関数を実装します
  2. (クラシック スタイル) 'data' イベントをリッスンして同じことを行います
  3. 事後にストリームに入り、チャンクを文字列に結合します

しかし、上記のすべては、今までに何千人もの人々によって何千回も書かれたに違いないコードのように思えます。うまくいけば、そのうちの 1 人がこれらの 2 行のコードを 1 つのモジュール関数に抽象化しました。または、私が見逃しているかもしれないもっと単純なものがあります-私が述べたように、私はまだnodejsストリームを理解していると確信していません.

4

1 に答える 1

2

Max Ogden のnode-concat-streamは、あなたが説明したことを行うと思います。

于 2013-07-17T04:49:06.783 に答える