推荐答案
Duplex Stream
Duplex Stream 是一种同时实现了可读和可写接口的流。它允许数据在两个方向上流动,即可以同时读取和写入数据。Duplex Stream 通常用于需要双向通信的场景,例如网络套接字。
Transform Stream
Transform Stream 是一种特殊的 Duplex Stream,它在数据从可写端流向可读端的过程中对数据进行转换。Transform Stream 通常用于数据流的处理,例如压缩、加密或数据格式转换。
本题详细解读
Duplex Stream
Duplex Stream 是 Node.js 中一种特殊的流类型,它同时实现了 Readable 和 Writable 接口。这意味着你可以像读取普通可读流一样从 Duplex Stream 中读取数据,同时也可以像写入普通可写流一样向 Duplex Stream 中写入数据。
用法示例
// www.javascriptcn.com code example
const { Duplex } = require('stream');
const myDuplex = new Duplex({
write(chunk, encoding, callback) {
console.log(`写入的数据: ${chunk.toString()}`);
callback();
},
read(size) {
this.push('从 Duplex Stream 读取的数据');
this.push(null); // 表示数据结束
}
});
myDuplex.write('写入的数据');
myDuplex.on('data', (chunk) => {
console.log(`读取的数据: ${chunk.toString()}`);
});Transform Stream
Transform Stream 是 Duplex Stream 的一种特殊形式,它在数据从可写端流向可读端的过程中对数据进行处理或转换。Transform Stream 通常用于数据流的中间处理步骤,例如压缩、加密或数据格式转换。
用法示例
// www.javascriptcn.com code example
const { Transform } = require('stream');
const myTransform = new Transform({
transform(chunk, encoding, callback) {
const upperCaseChunk = chunk.toString().toUpperCase();
this.push(upperCaseChunk);
callback();
}
});
myTransform.write('hello');
myTransform.on('data', (chunk) => {
console.log(`转换后的数据: ${chunk.toString()}`);
});在这个示例中,Transform Stream 将输入的数据转换为大写,并将其推送到可读端。