我在options
中发现要为readable stream设置高水印:
fs.createReadStream(path[, options])
但找不到writeable stream的highwatermark options
那么在创建可写流时如何设置它?
答案 0 :(得分:2)
即使fs.createWriteStream
上没有记载,stream.Writable
也可以选择:highWaterMark
。
fs.createWriteStream('out', { highWaterMark: 32000 });
console.log(stream._writableState.highWaterMark); // 32000
并实际测试其是否正常工作:
const lowHWStream = fs.createWriteStream('low', { highWaterMark: 1 });
const highHWStream = fs.createWriteStream('high', { highWaterMark: 32000 });
console.log(lowHWStream.write('a')); // false
console.log(highHWStream.write('a')); // true
如果内部缓冲区小于返回值,则返回值为true。 承认后创建流时配置的highWaterMark 块。如果返回false,则进一步尝试将数据写入到 流应停止,直到发出“排水”事件为止。
Checking the source code,您可以看到传递给createWriteStream
的选项已经传递给stream.Writable