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 的原因。


相关文章