@edgenets/utils 0.1.8 → 0.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -10,9 +10,12 @@ export declare class Queue<T> {
|
|
10
10
|
private isProcessing;
|
11
11
|
constructor(options?: QueueOptions);
|
12
12
|
enqueue(task: QueueTask<T>): void;
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
trigger(): Promise<void>;
|
14
|
+
getStatus(): {
|
15
|
+
activeTasks: number;
|
16
|
+
pendingTasks: number;
|
17
|
+
isProcessing: boolean;
|
18
|
+
};
|
16
19
|
private processQueue;
|
17
20
|
private delay;
|
18
21
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../src/utils/tasks/queue.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC;AAE5C,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,KAAK,CAAC,CAAC;IAMhB,OAAO,CAAC,OAAO;IALjB,OAAO,CAAC,KAAK,CAAsB;IACnC,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,YAAY,CAAS;gBAGnB,OAAO,GAAE,YAAiD;IAI7D,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI;
|
1
|
+
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../src/utils/tasks/queue.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC;AAE5C,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,KAAK,CAAC,CAAC;IAMhB,OAAO,CAAC,OAAO;IALjB,OAAO,CAAC,KAAK,CAAsB;IACnC,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,YAAY,CAAS;gBAGnB,OAAO,GAAE,YAAiD;IAI7D,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI;IAS3B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAU9B,SAAS,IAAI;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,OAAO,CAAC;KACvB;YASa,YAAY;IAgC1B,OAAO,CAAC,KAAK;CAGd"}
|
@@ -1,8 +1,8 @@
|
|
1
1
|
export class Queue {
|
2
2
|
options;
|
3
3
|
queue = [];
|
4
|
-
activeTasks = 0;
|
5
|
-
isProcessing = false;
|
4
|
+
activeTasks = 0;
|
5
|
+
isProcessing = false;
|
6
6
|
constructor(options = { concurrency: 1, interval: 1000 }) {
|
7
7
|
this.options = options;
|
8
8
|
}
|
@@ -10,48 +10,55 @@ export class Queue {
|
|
10
10
|
enqueue(task) {
|
11
11
|
this.queue.push(task);
|
12
12
|
if (!this.isProcessing) {
|
13
|
+
console.log("[Queue] Automatically starting processQueue...");
|
13
14
|
this.processQueue();
|
14
15
|
}
|
15
16
|
}
|
16
|
-
//
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
17
|
+
// 手动触发队列处理
|
18
|
+
async trigger() {
|
19
|
+
console.log("[Queue] Manually triggered processQueue...");
|
20
|
+
if (!this.isProcessing) {
|
21
|
+
await this.processQueue();
|
22
|
+
}
|
23
|
+
else {
|
24
|
+
console.log("[Queue] Already processing.");
|
25
|
+
}
|
23
26
|
}
|
24
|
-
//
|
25
|
-
|
26
|
-
return
|
27
|
+
// 获取队列状态
|
28
|
+
getStatus() {
|
29
|
+
return {
|
30
|
+
activeTasks: this.activeTasks,
|
31
|
+
pendingTasks: this.queue.length,
|
32
|
+
isProcessing: this.isProcessing,
|
33
|
+
};
|
27
34
|
}
|
28
35
|
// 队列处理逻辑
|
29
36
|
async processQueue() {
|
30
37
|
this.isProcessing = true;
|
31
38
|
while (this.queue.length > 0) {
|
32
|
-
// 取出当前批次任务
|
33
39
|
const batch = this.queue.splice(0, this.options.concurrency || 1);
|
34
40
|
this.activeTasks += batch.length;
|
35
|
-
|
41
|
+
console.log(`[Queue] Processing batch of ${batch.length} tasks...`);
|
36
42
|
await Promise.all(batch.map(async (task) => {
|
37
43
|
try {
|
38
|
-
await task();
|
44
|
+
await task();
|
39
45
|
}
|
40
46
|
catch (err) {
|
41
47
|
console.error(`[Queue][TaskFailed]: ${err}`);
|
42
48
|
}
|
43
49
|
finally {
|
44
|
-
this.activeTasks--;
|
50
|
+
this.activeTasks--;
|
45
51
|
}
|
46
52
|
}));
|
47
|
-
// 如果还有剩余任务,延迟执行下一批
|
48
53
|
if (this.queue.length > 0) {
|
49
|
-
|
54
|
+
console.log(`[Queue] Delaying for ${this.options.interval || 0}ms...`);
|
55
|
+
await this.delay(this.options.interval || 0);
|
50
56
|
}
|
51
57
|
}
|
52
|
-
this.isProcessing = false;
|
58
|
+
this.isProcessing = false;
|
59
|
+
console.log("[Queue] All tasks processed.");
|
53
60
|
}
|
54
|
-
//
|
61
|
+
// 延迟执行
|
55
62
|
delay(ms) {
|
56
63
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
57
64
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../../../src/utils/tasks/queue.ts"],"names":[],"mappings":"AAOA,MAAM,OAAO,KAAK;IAMN;IALF,KAAK,GAAmB,EAAE,CAAC;IAC3B,WAAW,GAAG,CAAC,CAAC
|
1
|
+
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../../../src/utils/tasks/queue.ts"],"names":[],"mappings":"AAOA,MAAM,OAAO,KAAK;IAMN;IALF,KAAK,GAAmB,EAAE,CAAC;IAC3B,WAAW,GAAG,CAAC,CAAC;IAChB,YAAY,GAAG,KAAK,CAAC;IAE7B,YACU,UAAwB,EAAE,WAAW,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;QAA1D,YAAO,GAAP,OAAO,CAAmD;IACjE,CAAC;IAEJ,UAAU;IACH,OAAO,CAAC,IAAkB;QAC/B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;YAC9D,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;IAED,WAAW;IACJ,KAAK,CAAC,OAAO;QAClB,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,SAAS;IACF,SAAS;QAKd,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;YAC/B,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,CAAC;IACJ,CAAC;IAED,SAAS;IACD,KAAK,CAAC,YAAY;QACxB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAEzB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;YAClE,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC,MAAM,CAAC;YAEjC,OAAO,CAAC,GAAG,CAAC,+BAA+B,KAAK,CAAC,MAAM,WAAW,CAAC,CAAC;YAEpE,MAAM,OAAO,CAAC,GAAG,CACf,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;gBACvB,IAAI,CAAC;oBACH,MAAM,IAAI,EAAE,CAAC;gBACf,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,OAAO,CAAC,KAAK,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAC;gBAC/C,CAAC;wBAAS,CAAC;oBACT,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,CAAC;YACH,CAAC,CAAC,CACH,CAAC;YAEF,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC;gBACvE,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO;IACC,KAAK,CAAC,EAAU;QACtB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;CACF"}
|