将字节数组转换为可读流

transform a byte array to a readablestream

嗨,我被这个问题困住了,

为了将数据播种到我的 miragejs 实例,我重建了一些 protobuf 对象,

  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。

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

您需要实现 ReadableStream 并将您的内容添加到控制器。 Mozilla's MDN Web Docs provide some guidance in their 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
        }
    });
}