build: 1.2.0-beta

This commit is contained in:
手瓜一十雪
2024-05-01 14:18:36 +08:00
parent 920e005366
commit a68349c23a
2 changed files with 51 additions and 1 deletions

View File

@@ -0,0 +1,37 @@
import { randomUUID } from "crypto";
class AsyncQueue {
private tasks: Map<string, any> = new Map<string, any>();
private MainQuene: any = undefined;
private callbacks: Map<string, any> = new Map<string, any>();
private ArgList: Map<string, any> = new Map<string, any>();
private busy = false;
// 添加任务到队列中 返回任务ID
public async addTask(task: any, args: any[], callBack: any) {
let uuid = randomUUID();
this.tasks.set(uuid, task);
this.callbacks.set(uuid, callBack);
this.ArgList.set(uuid, args);
return uuid;
}
public async runQueue() {
if (!this.MainQuene) {
this.MainQuene = this.Quene();
}
await this.MainQuene;
this.MainQuene = undefined;
}
public async Quene() {
for (let [uuid, task] of this.tasks) {
//console.log(uuid,...this.ArgList.get(uuid));
let result = await task(...this.ArgList.get(uuid));
console.log(result);
let cb = this.callbacks.get(uuid);
cb(result);
this.tasks.delete(uuid);
this.ArgList.delete(uuid);
this.callbacks.delete(uuid);
}
}
}
export const ImageQuene = new AsyncQueue();