要创建自己的可写流,您有三种可能性。
创建自己的班级
为此,您需要 1) 扩展 Writable 类 2) 在您自己的构造函数中调用 Writable 构造函数 3)_write()
在流对象的原型中定义一个方法。
这是一个例子:
var stream = require('stream');
var util = require('util');
function EchoStream () { // step 2
stream.Writable.call(this);
};
util.inherits(EchoStream, stream.Writable); // step 1
EchoStream.prototype._write = function (chunk, encoding, done) { // step 3
console.log(chunk.toString());
done();
}
var myStream = new EchoStream(); // instanciate your brand new stream
process.stdin.pipe(myStream);
扩展一个空的可写对象
Writable
您可以实例化一个空对象并实现该_write()
方法,而不是定义一个新的对象类型:
var stream = require('stream');
var echoStream = new stream.Writable();
echoStream._write = function (chunk, encoding, done) {
console.log(chunk.toString());
done();
};
process.stdin.pipe(echoStream);
使用简化的构造函数 API
如果您使用 io.js,则可以使用简化的构造函数 API:
var writable = new stream.Writable({
write: function(chunk, encoding, next) {
console.log(chunk.toString());
next();
}
});
在 Node 4+ 中使用 ES6 类
class EchoStream extends stream.Writable {
_write(chunk, enc, next) {
console.log(chunk.toString());
next();
}
}