Node.js 中的流 writable.writableLength 属性
node.jsjavascriptweb developmentfront end technology
writable.writableLength 属性用于显示队列中准备写入的字节数或对象数。这用于根据 highWaterMark 的状态检查数据。
语法
writeable.writableLength
示例 1
创建一个名为 – writableLength.js 的文件并复制以下代码片段。创建文件后,使用以下命令运行此代码,如下例所示 −
node writableLength.js
// 演示 writable.writableLength 方法的程序 const stream = require('stream'); // 使用 writable 创建数据流 const writable = new stream.Writable({ // 从流中写入数据 write: function(chunk, encoding, next) { // 将数据块转换为要显示 console.log(chunk.toString()); next(); } }); // 写入数据 - 不在缓冲队列中 writable.write('Hi - 此数据不计入'); // 调用 cork() 函数 writable.cork(); // 再次写入一些数据 writable.write('Welcome to TutorialsPoint !'); writable.write("简单学习"); writable.write("此数据将被塞入内存"); // 打印队列数据的长度 console.log(writable.writableLength);
输出
C:\home
ode>> node writableLength.js 嗨 - 此数据不计入 81
被塞入缓冲区队列内的数据被计数并打印在控制台中。
示例
我们再看一个例子。
// 程序演示 writable.cork() 方法 const stream = require("stream"); // 使用 writable 创建数据流 const writable = new stream.Writable({ // 从流中写入数据 write: function(chunk, encoding, next) { // 将数据块转换为要显示 console.log(chunk.toString()); next(); } }); // 写入数据 - 不在缓冲队列中 writable.write('Hi - 此数据不计入'); // 调用 cork() 函数 writable.cork(); // 再次写入一些数据 writable.write('Welcome to TutorialsPoint !'); writable.write("简单学习"); writable.write("此数据将被塞入内存"); // 打印队列数据的长度 console.log(writable.writableLength); // 从缓冲内存中刷新数据 writable.uncork() console.log(writable.writableLength);
输出
C:\home
ode>> node writableLength.js Hi - This data will not be counted 81 Welcome to TutorialsPoint ! SIMPLY LEARNING This data will be corked in the memory 0
由于数据现在已在 uncork() 之后刷新。队列将不会保存任何数据,这就是返回的长度为 0 的原因。