TransformStreamのなぞ
こんなコードを書いたのだけど……
var stream = require('stream'), util = require('util'); function s(options) { options || (options = {}); stream.Transform.call(this, options); } util.inherits(s, stream.Transform); s.prototype._transform = function(chunk, encoding, callback) { this.push(chunk.toString(encoding)); callback(null); }; var ss = new s; ss.on('error', function(err) { console.error(err); }); ss.on('readable', function() { var data; while ((data = ss.read(1)) !== null) { console.log('---' + data); lines.push(data); } }); ss.on('end', function() { console.log('end'); }); ss.write('', function() {console.log('write: 1');}); ss.write('', function() {console.log('write: 2');}); ss.write('', function() {console.log('write: 3');}); ss.end();
$ node index.js write: 1 write: 2 write: 3 end
空文字をwriteしても無視される?
$ node index.js --- write: 1 --- write: 2 --- write: 3 end
というのを期待してたのだけど……
1文字以上指定するとちゃんとそうなるのだけど。
stream2よくわからんなあ……