如何将高地流转化为节点可读流?
How to transform a highland stream into a node readable stream?
我有一个highland stream streaming strings. I want to consume it by an external library (in my case Amazon S3) and for its SDK I need a standard node Readable Stream。
有没有办法立即将 highland 流转换为 ReadStream?还是必须自己改造?
似乎没有 built-in 将高地流转换为节点流的方法(根据当前的高地文档)。
但是 highland 流可以通过管道传输到 Node.js 流中。
因此您可以使用标准 PassThrough 流在 2 行代码中实现此目的。
PassThrough 流基本上是一个转发器。它是转换流(可读和可写)的简单实现。
'use strict';
const h = require('highland');
const {PassThrough, Readable} = require('stream');
let stringHighlandStream = h(['a', 'b', 'c']);
let readable = new PassThrough({objectMode: true});
stringHighlandStream.pipe(readable);
console.log(stringHighlandStream instanceof Readable); //false
console.log(readable instanceof Readable); //true
readable.on('data', function (data) {
console.log(data); // a, b, c or <Buffer 61> ... if you omit objectMode
});
它将根据 objectMode 标志发出字符串或缓冲区。
我有一个highland stream streaming strings. I want to consume it by an external library (in my case Amazon S3) and for its SDK I need a standard node Readable Stream。
有没有办法立即将 highland 流转换为 ReadStream?还是必须自己改造?
似乎没有 built-in 将高地流转换为节点流的方法(根据当前的高地文档)。
但是 highland 流可以通过管道传输到 Node.js 流中。
因此您可以使用标准 PassThrough 流在 2 行代码中实现此目的。
PassThrough 流基本上是一个转发器。它是转换流(可读和可写)的简单实现。
'use strict';
const h = require('highland');
const {PassThrough, Readable} = require('stream');
let stringHighlandStream = h(['a', 'b', 'c']);
let readable = new PassThrough({objectMode: true});
stringHighlandStream.pipe(readable);
console.log(stringHighlandStream instanceof Readable); //false
console.log(readable instanceof Readable); //true
readable.on('data', function (data) {
console.log(data); // a, b, c or <Buffer 61> ... if you omit objectMode
});
它将根据 objectMode 标志发出字符串或缓冲区。