Node.js 中的流 writable.cork() 和 uncork() 方法

该方法用于强制将所有写入的数据缓存在内存中。这个缓冲的数据只会在或方法被调用后从缓冲存储器中删除。writable.cork()stream.uncork()stream.end()

语法

cork()

writeable.cork()

uncork()

writeable.uncork()

参数

因为它缓冲写入的数据。只有需要的参数才是可写数据。

示例

创建一个具有名称的文件 -cork.js并复制以下代码片段。创建文件后,使用以下命令运行此代码,如下例所示 -

node cork.js

软木塞

// 演示 writable.cork() 方法的程序
const stream = require('stream');

// 创建具有可写性的数据流
const writable = new stream.Writable({
   // 从流中写入数据
   write: function(chunk, encoding, next) {
      // 转换要显示的数据块
      console.log(chunk.toString());
      next();
   }
});

// 写入数据
writable.write('Hi - This data is printed');

// 调用 cork() 函数
writable.cork();

// 再次写入一些数据
writable.write('Welcome to nhooo !');
writable.write('SIMPLY LEARNING ');
writable.write('This data will be corked in the memory');
输出结果
C:\home\node>> node cork.js
Hi - This data is printed

仅cork()打印方法之间写入的数据,而其余数据将在缓冲存储器中塞满。下面的例子展示了如何从缓冲存储器中解开上述数据。

示例

让我们再看一个例子uncork()- uncork.js

// 演示 writable.cork() 方法的程序
const stream = require('stream');

// 创建具有可写性的数据流
const writable = new stream.Writable({
   // 从流中写入数据
   write: function(chunk, encoding, next) {
      // 转换要显示的数据块
      console.log(chunk.toString());
      next();
   }
});

// 写入数据
writable.write('Hi - This data is printed');

// 调用 cork() 函数
writable.cork();

// 再次写入一些数据
writable.write('Welcome to nhooo !');
writable.write('SIMPLY LEARNING ');
writable.write('This data will be corked in the memory');

// 从缓冲内存中刷新数据
writable.uncork()
输出结果
C:\home\node>> node uncork.js
Hi - This data is printed
Welcome to nhooo !
SIMPLY LEARNING
This data will be corked in the memory

使用该uncork()方法刷新缓冲内存后,将显示上述示例中的完整数据。