如何设置可写高水印?

jia*_*ong 2 node.js

我发现options可读流设置高水印: fs.createReadStream(path[, options])

但无法找到highwatermark options可写流

那么在创建可写流时如何设置呢?

Mar*_*nde 5

即使它没有记录在 上fs.createWriteStream,astream.Writable也可以将:highWaterMark作为一个选项。

fs.createWriteStream('out', { highWaterMark: 32000 });

console.log(stream._writableState.highWaterMark); // 32000
Run Code Online (Sandbox Code Playgroud)

并实际测试它是否有效:

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
Run Code Online (Sandbox Code Playgroud)

如果内部缓冲区小于在接纳块后创建流时配置的 highWaterMark,则返回值为 true。如果返回 false,则应停止进一步尝试将数据写入流,直到发出 'drain' 事件。

检查源代码,您可以看到您传递给的选项createWriteStream被传递给 stream.Writable