From 4d0331d5e8fffa572fec6c8cc82098e78a761888 Mon Sep 17 00:00:00 2001 From: unanmed <1319491857@qq.com> Date: Sun, 19 Jan 2025 15:15:18 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=B8=8D=E6=94=AF=E6=8C=81=E6=B5=81?= =?UTF-8?q?=E4=BC=A0=E8=BE=93=E6=97=B6=E7=9A=84=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/common/resource.ts | 6 +++--- src/module/loader/stream.ts | 25 ++++++++++++++----------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/core/common/resource.ts b/src/core/common/resource.ts index 9360086..d85448c 100644 --- a/src/core/common/resource.ts +++ b/src/core/common/resource.ts @@ -205,9 +205,9 @@ export class ByteResource extends Resource { async load(_onProgress?: ProgressFn): Promise { const response = await fetch(this.resolveURI()); - const data = await response.bytes(); - this.resource = data; - return data; + const data = await response.arrayBuffer(); + this.resource = new Uint8Array(data); + return this.resource; } resolveURI(): string { diff --git a/src/module/loader/stream.ts b/src/module/loader/stream.ts index 2089021..4c7a1f9 100644 --- a/src/module/loader/stream.ts +++ b/src/module/loader/stream.ts @@ -99,21 +99,24 @@ export class StreamLoader this.stream = stream; const reader = response.body?.getReader(); const targets = [...this.target]; - // try { await Promise.all(targets.map(v => v.start(stream, this, response))); - - // 开始流传输 - while (true) { - const { value, done } = await reader.read(); - await Promise.all(targets.map(v => v.pump(value, done, response))); - if (done) break; + if (reader && reader.read) { + // 开始流传输 + while (true) { + const { value, done } = await reader.read(); + await Promise.all( + targets.map(v => v.pump(value, done, response)) + ); + if (done) break; + } + } else { + // 如果不支持流传输 + const buffer = await response.arrayBuffer(); + const data = new Uint8Array(buffer); + await Promise.all(targets.map(v => v.pump(data, true, response))); } - this.loading = false; targets.forEach(v => v.end(true)); - // } catch (e) { - // logger.error(26, this.url, String(e)); - // } } cancel(reason?: string) {