可以說我有一個對象定義stream的_write屬性。可以多次寫入正確的方式
logfile是一個實際的文件。
wStream = require("stream").Writable
,我定義:
logStream = function logStream() {
this.file = logfile;
wStream.call(this);
};
require("util").inherits(logStream, wStream);
logStream.prototype._write = function logStream_write (data, enc, cb) {
fs.appendFile(this.file, data, 'utf-8', function WatchLogErr(err) {
if (err) {throw Error(err);}
});};
const log = new logStream();
log.on('finish', function() {
console.log("finished writing to log stream");
});
如果我寫
log.write("watching changes\n");
log.write("watching changes\n");
它只寫一次,然後不寫。
爲什麼?它是否過早結束? 我怎樣才能讓它不寫結束?
UPDATE
如果說我通過認證機構的功能,FN(參數,CB){//做一些事情; CB(X);};然後我可以在發射fn時定義:fn([1,2,3],shifoo(x){console.log(x);}); 是否正確?
那麼我在哪裏使用這個cb? 說
log.write("watching changes2\n", 'utf-8', function (data) {
console.log("wrote " + data.toString());
});
這樣做,讓我這個錯誤:
Error: Uncaught, unspecified "error" event.
at Error (native)
at logStream.emit (events.js:87:13)
at onwriteError (_stream_writable.js:317:10)
at onwrite (_stream_writable.js:335:5)
at WritableState.onwrite (_stream_writable.js:105:5)
您是否缺少另一個'});'在您的'const log = new logStream();'之前?否則,它看起來像在'_write()'方法內實例化一個'logStream'。 – mscdex
修正了:) @mscdex – user2290820