【问题标题】:transform a byte array to a readablestream将字节数组转换为可读流
【发布时间】:2023-03-05 07:30:01
【问题描述】:

您好,我被这个问题困住了,

我重构了一些 protobuf 对象,以便将数据播种到我的 miragejs 实例中,

  const unknownObject = new core.UnknownObject()
  const unknownEntity = new message.UnknownObjectEntity()
  const unknownEntityRepo = new message.UnknownObjectEntityRepository()
  const unknownObjectNotification = new message.UnknownObjectNotification()

  const date = new google_protobuf_timestamp_pb.Timestamp()

  unknownObject.setImage(Base64())
  unknownObject.setTimestamp(date)
  unknownObject.setWaypoint(new core.Waypoint())

  console.log('unknownObject:', unknownObject.getTimestamp())

  unknownEntity.setId('1')
  unknownEntity.setUnknownobject(unknownObject)

  console.log('unknownEntity:', unknownEntity)

  const endBuffer = unknownEntityRepo.addEntity(unknownEntity).serializeBinary()

最终结果(endBuffer)是一个字节数组。我想将此字节数组重建为可读流以播种数据。这是需要的最终结果。

ReadableStream {locked: false}

我只能资助用于读取流的资源,但不能将字节数组转换为 ReadableStream。

有没有人有这方面的经验。谢谢

【问题讨论】:

    标签: javascript stream protocol-buffers


    【解决方案1】:

    您需要实现 ReadableStream 并将您的内容添加到控制器。 Mozilla's MDN Web Docs 在他们的simple random string example 中提供一些指导。

    这是一个简化的例子:

    function buildStream(data)
    {
        //depending on what data is and how it will be used, you may need to convert it
        //data = Uint8Array.from(data);
        
        return new ReadableStream({
            start(controller) {
                // Add the data to the stream
                controller.enqueue(data);
            },
            pull(controller) {
                // nothing left to pull, so close
                controller.close();
            },
            cancel() {
                //nothing to done
            }
        });
    }
    

    【讨论】:

      猜你喜欢
      • 2014-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-08
      • 1970-01-01
      • 2012-04-12
      • 2023-03-28
      相关资源
      最近更新 更多