【问题标题】:Converting Uint8Array into Stream with Node JS使用 Node JS 将 Uint8Array 转换为 Stream
【发布时间】:2015-08-24 21:47:19
【问题描述】:

将原生 JavaScript Uint8Array 转换为可读或转换 Stream 的最佳方法是什么?

我想出了如何将 Uint8Array 转换为缓冲区,不确定这是否有帮助:

var uint8array = new Uint8Array();
var buffer = new Buffer(uint8array);

【问题讨论】:

    标签: javascript arrays node.js stream


    【解决方案1】:

    standard way 将使用_read 方法定义一个可读流:

    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);
    

    不过,你也可以使用event-streamreadArray方法:

    var es = require('event-stream');
    var data = [1, 2, 3, 4];
    var myStream = es.readArray(data);
    
    myStream.pipe(somewhere);
    

    【讨论】:

    • 尝试“标准方式”我得到一个错误:“TypeError: Invalid non-string/buffer chunk”。我将它输送到 process.stdout 作为测试。是我做错了什么,还是坏了?
    【解决方案2】:

    它对我有用的是使用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);
    

    【讨论】:

      猜你喜欢
      • 2022-11-28
      • 1970-01-01
      • 1970-01-01
      • 2020-04-13
      • 2021-04-15
      • 1970-01-01
      • 2019-11-08
      • 2018-02-19
      • 2021-08-28
      相关资源
      最近更新 更多