如何限制 ReadableStream 中每次读取的大小

OUL*_*TAK 5 javascript streaming

我使用 HTML 文件输入从我的设备存储访问文件,然后我将该文件作为流读取。

  • 是否有任何内置方法可以将每次读取的长度限制为特定的字节数。
const stream = myFile.stream() 
const reader = stream.getReader();

//actually I use this each time I want to read more data from the stream
reader.read().then(function({ done, value }) { 
  
    const bufferSizeInBytes = value.length //  I want to limit this to 1000 bytes as max value
   
    })
Run Code Online (Sandbox Code Playgroud)

另一个让我困惑的问题是,为什么每次读取时我们都会得到不同大小的缓冲区,它是否取决于可用内存或 cpu 或者它实际上是如何工作的?如果它取决于内存,我们将能够在一次读取中读取整个流,因为文件已经存在100 mb并且我的可用内存约为 6GB,但实际上它需要多次读取,这让我认为内存不是唯一的因素这次操作的背后。

任何帮助将非常感激。

小智 2

不,您当前无法控制默认文件流的读取器块大小,您可以尝试将其转换为 ByteStream,然后使用stream.getReader({ mode: 'byob' })获取 BYOB 读取器来控制读取大小限制。

更多信息: https: //web.dev/streams/