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
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());
|
|
}
|
|
}
|