我有一个提取序列,试图将缓冲区大小每次都设置为相同。我使用autoAllocateChunkSize和highWaterMark定义了我希望的大小,但是它们似乎都没有做任何事情。在下面的示例中,我期望console.log的输出与变量chunkLength的值相同。但是,该值始终与我期望的大小不同且很小。
var streamUrl = 'http://www.url.to/stream.ts';
var chunkLength = 3000000;
fetch(streamUrl).then((response) => {
const reader = response.body.getReader();
const stream = new ReadableStream({
autoAllocateChunkSize: chunkLength,
queueingStrategy: { highWaterMark: chunkLength },
start(controller) {
function push() {
reader.read().then(({ done, value }) => {
// Is there no more data to read?
if (done) {
controller.close();
return;
}
console.log(value);
controller.enqueue(value);
push();
});
};
push();
}
});
return new Response(stream, { headers: { "Content-Type": "application/octet-stream" } });
})