ここ数週間、ノード ストリームを使用してきましたが、実際にストリーム メソッドを直接使用するよりも、(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 を見てきましたが、それらの目標は異なるようです。
そのようなすべてのデータをキャプチャすることは理想的ではないことを理解しています-時には必要ですが。また、単純なコードを書くことで目的を達成できることも理解しています。
- 受信チャンクを文字列にキャプチャ/連結する _read 関数を実装します
- (クラシック スタイル) 'data' イベントをリッスンして同じことを行います
- 事後にストリームに入り、チャンクを文字列に結合します
しかし、上記のすべては、今までに何千人もの人々によって何千回も書かれたに違いないコードのように思えます。うまくいけば、そのうちの 1 人がこれらの 2 行のコードを 1 つのモジュール関数に抽象化しました。または、私が見逃しているかもしれないもっと単純なものがあります-私が述べたように、私はまだnodejsストリームを理解していると確信していません.