对象模式双工流
【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 端可以接受 JavaScript 数字,这些数字会在 Readable 端被转换为十六进制字符串。
【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