複数の関数がnode.jsの単一ストリームを消費する可能性があるかどうかを知りたい。はいの場合これはどのようにすることができますか?複数の宛先にパイプすることは可能ですか?単一ストリームの複数の消費
ストリームを2つの異なる機能で並列に使用したいと考えています。私は非同期モジュールを使用して並列フローを実行しています。それでは、これらの関数のそれぞれの内部にpipe()ステートメントを発行することは可能でしょうか?
ありがとうございます。
複数の関数がnode.jsの単一ストリームを消費する可能性があるかどうかを知りたい。はいの場合これはどのようにすることができますか?複数の宛先にパイプすることは可能ですか?単一ストリームの複数の消費
ストリームを2つの異なる機能で並列に使用したいと考えています。私は非同期モジュールを使用して並列フローを実行しています。それでは、これらの関数のそれぞれの内部にpipe()ステートメントを発行することは可能でしょうか?
ありがとうございます。
はいは、可能で簡単で一般的です。以下は、単一のソースから複数のソースへのパイプされたデータストリームです。
var fs = require('fs');
var rs1 = fs.createReadStream ('input1.txt');
var ws1 = fs.createWriteStream('output1.txt');
var ws2 = fs.createWriteStream('output2.txt');
rs1.on('data', function (data) {
console.log(data.toString('utf8'));
ws1.write('1: ' + data);
ws2.write('2: ' + data);
});
簡単な方法は、.pipe()
機能を使用することです:それはあなたの実際の書き込み作業を行う書き込み機能ストリームが含まれているイベントループに配置します1つの匿名コールバック関数を示しています。
var fs = require('fs');
var rs1 = fs.createReadStream ('input1.txt');
var ws1 = fs.createWriteStream('output1.txt');
var ws2 = fs.createWriteStream('output2.txt');
rs1.pipe(ws1);
rs1.pipe(ws2);
.pipe()
あなたはハンドラに複数のパイプを使用することができますdu . | sort -rn | less
のようなもののUnixの概念に非常に似て、パイプライン操作のために、将来的にパイプラインチェーンのような気の利いたことを行うことができます。
私は非同期モジュールの並列フローで2つの異なる機能でストリームを使用しています。パイプを2つの異なる機能で実行しても、それでも機能しますか? –
私はコメントに書き込んだ詳細で質問を更新しました。だからあなたの答えも更新してください –
最初のハンドラを消費してストリーム自体にしてから、それを2番目のハンドラに渡します。 –
@BenjaminGruenbaumまたは複数の出力ストリームを維持し、入力ストリームから各出力にデータを書き込むだけの "tee"を設計します。 – SheetJS
待ち、nvm。あなたが望む場所にストリームをパイプすることができます - それは死んでシンプルです。 –