2

現在、node.jsストリームについて学習しているので、独自のカスタムストリーミングモジュールを作成したいと思います。これが私が現在持っているものです:

index.js:

fs = require("fs")
var module = require("./module")
var ws = fs.createWriteStream("out.txt")

fs.createReadStream("in.txt")
  .pipe(module())
  .pipe(ws)

module.js:

var Stream = require('stream').Stream;

module.exports = function() {
  var stream = new Stream();

  this.writable = true;
  this.readable = true;

  stream.write = function(data) {
    console.log("write")
    stream.emit("data", data)
  }

  stream.end = function() {
    console.log("end")
    stream.emit("end")
  }

  stream.destroy = function() {
    console.log("destroy")
    stream.emit("close")
  }

  return stream;
}

in.txt:

text
text
text
text
text
text
text
text
text
text

問題は、out.txtが空であり、stream.write関数が呼び出されないことです。どうしてこんなことに?コメントアウトすると、真ん中のパイプはすべて正常に機能します。

4

1 に答える 1

2

コードには、簡単に修正できるバグが1つあります。

変更module.js点:

this.writable = true;
this.readable = true;

に:

stream.writable = true;
stream.readable = true;

そしてそれは動作します。

また、ストリームの使用方法について詳しく知りたい場合は、サブスタックがストリームハンドブックの形式で優れたリソースを作成しました。

于 2012-09-27T14:49:06.057 に答える