我发现options为可读流设置高水印:
fs.createReadStream(path[, options])
但无法找到highwatermark options的可写流
那么在创建可写流时如何设置呢?
即使它没有记录在 上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