对双工流来说,可以使用 readableObjectModewritableObjectMode 选项来分别设置可读端和可写端的 objectMode

    在下面的例子中,创建了一个变换流(双工流的一种),对象模式的可写端接收 JavaScript 数值,并在可读端转换为十六进制字符串。

    1. const { Transform } = require('stream');
    2. // 转换流也是双工流。
    3. const myTransform = new Transform({
    4. writableObjectMode: true,
    5. transform(chunk, encoding, callback) {
    6. // 强制把 chunk 转换成数值。
    7. chunk |= 0;
    8. // 将 chunk 转换成十六进制。
    9. const data = chunk.toString(16);
    10. // 推送数据到可读队列。
    11. callback(null, '0'.repeat(data.length % 2) + data);
    12. }
    13. });
    14. myTransform.setEncoding('ascii');
    15. myTransform.on('data', (chunk) => console.log(chunk));
    16. myTransform.write(1);
    17. // 打印: 01
    18. myTransform.write(10);
    19. // 打印: 0a
    20. myTransform.write(100);
    21. // 打印: 64