2025-03-27 19:01:32 +08:00

59 lines
1.2 KiB
Plaintext

import Prompt from '@system.prompt'
const TAG = 'SURENJUN_JUDGE'
interface DelayConfig{
isDelay: boolean
delayTime?: number
}
interface QUEUE {
fn: Function,
delayConfig?: DelayConfig
}
type GoTask = (currentTask:QUEUE)=>Promise<boolean>
export default class JudgeTask {
private queue?:QUEUE[] = []
private status: string
constructor() {
this.queue = []
this.status = 'end'
}
//执行任务
goTask:GoTask = async (currentTask:QUEUE) => {
const fn = currentTask.fn;
const delayConfig = currentTask.delayConfig || {isDelay:false,delayTime:1000}
const isDelay = delayConfig.isDelay
const delayTime = delayConfig.delayTime
return false
}
executeQueue = async () => {
const queue = this.queue;
const executeQueue = this.executeQueue
if (queue.length) {
for (const currentTask of queue) {
await this.goTask(currentTask)
this.queue.shift()
await executeQueue()
}
} else {
this.status = 'end'
}
}
addTask = async (fn:Function, delayConfig?: DelayConfig) => {
this.queue.push({
fn, delayConfig
});
if (this.status == 'end' && this.queue.length === 1) {
await this.executeQueue();
}
}
}