对象模式双工流
¥Object mode duplex streams
对于 Duplex
流,可以分别使用 readableObjectMode
和 writableObjectMode
选项为 Readable
或 Writable
端专门设置 objectMode
。
¥For Duplex
streams, objectMode
can be set exclusively for either the
Readable
or Writable
side using the readableObjectMode
and
writableObjectMode
options respectively.
例如,在下面的示例中,创建了一个新的 Transform
流(这是一种 Duplex
流),它具有对象模式 Writable
端,该端接受在 Readable
端转换为十六进制字符串的 JavaScript 数字。
¥In the following example, for instance, a new Transform
stream (which is a
type of Duplex
stream) is created that has an object mode Writable
side
that accepts JavaScript numbers that are converted to hexadecimal strings on
the Readable
side.
const { Transform } = require('node:stream');
// All Transform streams are also Duplex Streams.
const myTransform = new Transform({
writableObjectMode: true,
transform(chunk, encoding, callback) {
// Coerce the chunk to a number if necessary.
chunk |= 0;
// Transform the chunk into something else.
const data = chunk.toString(16);
// Push the data onto the readable queue.
callback(null, '0'.repeat(data.length % 2) + data);
},
});
myTransform.setEncoding('ascii');
myTransform.on('data', (chunk) => console.log(chunk));
myTransform.write(1);
// Prints: 01
myTransform.write(10);
// Prints: 0a
myTransform.write(100);
// Prints: 64