fix: 如果先前的分片已经被取消,则后续就不需要上传了(整个任务实际被取消)

This commit is contained in:
Pan Qiancheng 2025-12-27 00:06:15 +08:00
parent df9855906d
commit 2871934bcd
3 changed files with 22 additions and 3 deletions

View File

@ -90,7 +90,12 @@ export async function chunkUpload(options) {
// 使用并发控制执行上传
const executing = new Set();
const errors = [];
let shouldAbort = false; // 中止标志
for (const task of uploadTasks) {
// 如果已经需要中止,跳过未开始的任务
if (shouldAbort) {
break;
}
let promise;
promise = (async () => {
try {
@ -98,8 +103,9 @@ export async function chunkUpload(options) {
}
catch (err) {
if (isAbortError(err)) {
// 用户主动中止上传,抛到上层再处理
// 用户主动中止上传,设置中止标志,阻止后续任务开始
console.log(`分片 ${task.part.partNumber} 上传被用户中止`);
shouldAbort = true;
}
errors.push(err);
throw err;

View File

@ -94,7 +94,12 @@ async function chunkUpload(options) {
// 使用并发控制执行上传
const executing = new Set();
const errors = [];
let shouldAbort = false; // 中止标志
for (const task of uploadTasks) {
// 如果已经需要中止,跳过未开始的任务
if (shouldAbort) {
break;
}
let promise;
promise = (async () => {
try {
@ -102,8 +107,9 @@ async function chunkUpload(options) {
}
catch (err) {
if (isAbortError(err)) {
// 用户主动中止上传,抛到上层再处理
// 用户主动中止上传,设置中止标志,阻止后续任务开始
console.log(`分片 ${task.part.partNumber} 上传被用户中止`);
shouldAbort = true;
}
errors.push(err);
throw err;

View File

@ -123,16 +123,23 @@ export async function chunkUpload(
// 使用并发控制执行上传
const executing: Set<Promise<void>> = new Set();
const errors: Error[] = [];
let shouldAbort = false; // 中止标志
for (const task of uploadTasks) {
// 如果已经需要中止,跳过未开始的任务
if (shouldAbort) {
break;
}
let promise;
promise = (async () => {
try {
await uploadPart(task.part, task.chunk);
} catch (err) {
if (isAbortError(err)) {
// 用户主动中止上传,抛到上层再处理
// 用户主动中止上传,设置中止标志,阻止后续任务开始
console.log(`分片 ${task.part.partNumber} 上传被用户中止`);
shouldAbort = true;
}
errors.push(err as Error);
throw err;