大侠
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

37 lines
910 B

import { ILoadingTask } from "./LoadingMgr";
export class LoadTaskMgr {
private readonly tasks = new Map<string, () => ILoadingTask>();
/**
* 初始化任务管理器
*/
public init(task: Record<string, () => ILoadingTask>) {
// 注册所有任务
Object.entries(task).forEach(([key, creator]) => {
this.registerTask(key, creator);
});
}
/**
* 注册单个任务
*/
private registerTask(key: string, creator: () => ILoadingTask) {
this.tasks.set(key, creator);
}
/**
* 获取任务
*/
public getTask(key: string): ILoadingTask {
const creator = this.tasks.get(key);
return creator ? creator() : null;
}
/**
* 获取所有任务
*/
public getAllTasks(): ILoadingTask[] {
return Array.from(this.tasks.values()).map(creator => creator());
}
}