使用Node JS将Uint8Array转换为Stream
Uint8Array
生JavaScript Uint8Array
转换为可读或变换Stream
的最佳方式是什么?
我想出了如何把Uint8Array的成为缓冲区,不知道这是否有帮助:
var uint8array = new Uint8Array(); var buffer = new Buffer(uint8array);
标准的方法是用一个_read
方法定义一个可读的stream:
var Stream = require('stream'); var myStream = new Stream.Readable(); var i = 0; var data = [1, 2, 3, 4]; myStream._read = function(size) { var pushed = true; while (pushed && i < data.length) { pushed = this.push(data[i++]); } if (i === data.length) { this.push(null); } }; myStream.pipe(somewhere);
但是,您也可以使用事件stream的readArray
方法:
var es = require('event-stream'); var data = [1, 2, 3, 4]; var myStream = es.readArray(data); myStream.pipe(somewhere);
是什么使它对我的工作是使用Duplex
而不是Readable
(功劳为Brian Mancini ):
import { Duplex } from 'stream'; // Or non ES6 syntax: // const Duplex = require('stream').Duplex let stream = new Duplex(); stream.push(buffer); stream.push(null); stream.pipe(process.stdout);