Node.js Stream writable.uncork() 方法
writable.uncork() 方法是 Stream 模块的内置应用程序编程接口,用于在调用 stream.cork() 方法时刷新所有缓冲数据。
句法:
writable.uncork()
参数:此方法不接受任何参数。
返回值:如果正在调用此方法,则被塞住的数据将再次显示在输出中。
下面的例子说明了 Node.js 中writable.uncork() 方法的使用:
示例 1:
// Node.js program to demonstrate the
// writable.uncork() method
const stream = require('stream');
// Creating a stream and creating
// a write function
const writable = new stream.Writable({
// Write function with its
// parameters
write: function(chunk, encoding, next) {
// Converting the chunk of
// data to string
console.log(chunk.toString());
next();
}
});
// Writing data
writable.write('hi');
// Calling cork() function
writable.cork();
// Again writing some data
writable.write('hello');
writable.write('world');
// Calling uncork() function
writable.uncork();
输出:
hi
hello
world
在上面的例子中,被塞住的数据也会在输出中返回,因为之后会调用 uncork()函数。
示例 2:
// Node.js program to demonstrate the
// writable.uncork() method
const stream = require('stream');
// Creating a stream and creating
// a write function
const writable = new stream.Writable({
// Write function with its
// parameters
write: function(chunk, encoding, next) {
// Converting the chunk of
// data to string
console.log(chunk.toString());
next();
}
});
// Calling cork() function
writable.cork();
// Writing data
writable.write('hi');
// Calling cork() function
writable.cork();
// Again writing some data
writable.write('hello');
// Calling uncork function
// using nextTick()
process.nextTick(() => {
// Calling uncork function
writable.uncork();
writable.uncork();
});
输出:
hi
hello
因此,您需要调用 uncork()函数的次数与调用 cork函数的次数相同。在上面的例子中,我们调用了两次 cork()函数,所以 uncork函数也被调用了两次。
参考: https://nodejs.org/api/stream.html#stream_writable_uncork