ow
This commit is contained in:
1 parent
ceb3e7beec
commit
f6f3735ab3
29 files changed
+8376
-140
No files matched your search
@@ -44,7 +44,12 @@ export interface UploadItem {
|
||||
finishedAt: number;
|
||||
}
|
||||
|
||||
/** 并发 3(旧系统 FileUpload 默认 4,移动端蜂窝网络下保守一档) */
|
||||
/**
|
||||
* 多文件并发上传(并发 3,旧系统 FileUpload 默认 4,移动端蜂窝网络下保守一档)。
|
||||
* 并发传同一目录曾触发后端 dms_folder_map 主键 Duplicate entry,根因是编号生成器
|
||||
* SecurityGeneratorNumberService.GetNo 的非原子「读-改-写」;后端已改为数据库端原子自增,
|
||||
* 故此处恢复并发、pump() 也不再按 targetPath 串行。
|
||||
*/
|
||||
const MAX_PARALLEL = 3;
|
||||
|
||||
/** 可中止句柄:uni 的 UploadTask 与 XHR 都满足这个最小面 */
|
||||
@@ -166,12 +171,17 @@ export const useUploadQueueStore = defineStore(
|
||||
}
|
||||
|
||||
// ===== 队列驱动 =====
|
||||
/** 补位式调度:不满并发上限就把排队任务逐个点着 */
|
||||
/**
|
||||
* 补位式调度:不满并发上限就把排队任务逐个点着。
|
||||
* 后端编号生成器(GetNo)已改成数据库端原子自增,多文件并发传同一目录不再争抢
|
||||
* dms_folder_map 主键,故不再按 targetPath 串行,同目录也可并行、充分提速。
|
||||
*/
|
||||
function pump(): void {
|
||||
let busy = items.value.filter(
|
||||
const busy = items.value.filter(
|
||||
(item: UploadItem) => item.status === "uploading",
|
||||
).length;
|
||||
while (busy < MAX_PARALLEL) {
|
||||
let free = MAX_PARALLEL - busy;
|
||||
while (free > 0) {
|
||||
const next = items.value.find(
|
||||
(item: UploadItem) => item.status === "queued",
|
||||
);
|
||||
@@ -179,7 +189,7 @@ export const useUploadQueueStore = defineStore(
|
||||
break;
|
||||
}
|
||||
runTask(next);
|
||||
busy += 1;
|
||||
free -= 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user