Compare commits

..
1 Commits
Author SHA1 Message Date
jialin 75b70a26bd fix: download log failed 2025-07-25 11:26:09 +08:00
2 changed files with 21 additions and 16 deletions
+20 -15
View File
@@ -97,16 +97,20 @@ const useSetChunkFetch = () => {
this.updateProgress(data);
}
public flush(done?: boolean) {
public async flush(done?: boolean) {
if (this.buffer.length > 0) {
while (this.buffer.length > 0) {
const item = this.buffer.shift()!;
const isComplete = this.buffer.length === 0 && done;
callback(item, {
isComplete: isComplete || this.percent === 100,
percent: this.percent,
progress: this.progress,
contentLength: this.contentLength
await new Promise<void>((resolve) => {
callback(item, {
isComplete: isComplete || this.percent === 100,
percent: this.percent,
progress: this.progress,
contentLength: this.contentLength
});
resolve();
});
}
}
@@ -126,8 +130,8 @@ const useSetChunkFetch = () => {
contentLength: contentLength
});
const throttledCallback = throttle(() => {
bufferManager.flush();
const throttledCallback = throttle(async () => {
await bufferManager.flush();
}, delay);
let isReading = true;
@@ -135,20 +139,21 @@ const useSetChunkFetch = () => {
while (isReading) {
const { done, value } = await reader.read();
if (done) {
isReading = false;
bufferManager.flush(done);
break;
}
try {
const chunk = decoder.decode(value, { stream: true });
bufferManager.add(chunk);
// bufferManager.updateSpeed(chunk.length);
throttledCallback();
} catch (error) {
// handle error
}
if (done) {
isReading = false;
await bufferManager.flush(done);
throttledCallback.cancel();
reader.releaseLock();
break;
}
}
};
@@ -347,7 +347,7 @@ const renderMessage = (title: string) => {
return (
<div
style={{
width: 300,
width: 280,
textOverflow: 'ellipsis',
whiteSpace: 'nowrap',
overflow: 'hidden'