fineui是帆软报表和BI产品线所使用的前端框架。
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.
|
|
|
import type { WorkerBaseAction } from "./action/worker.action";
|
|
|
|
import { WorkerMainThreadController } from "./controller/worker.main_thread.controller";
|
|
|
|
import { IWorkerOptions } from "./worker.core";
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 主线程Worker
|
|
|
|
*/
|
|
|
|
export abstract class MainThreadWorker {
|
|
|
|
/**
|
|
|
|
* Worker 名称
|
|
|
|
*/
|
|
|
|
public name: string;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 主线程通信控制器
|
|
|
|
*/
|
|
|
|
public controller: WorkerMainThreadController;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 是否已经终止掉 Worker
|
|
|
|
*/
|
|
|
|
protected isTerminated = false;
|
|
|
|
|
|
|
|
public constructor(options: IWorkerOptions) {
|
|
|
|
this.name = options.workerName;
|
|
|
|
this.controller = new WorkerMainThreadController(options);
|
|
|
|
this.initActions();
|
|
|
|
}
|
|
|
|
|
|
|
|
protected abstract initActions(): void;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 销毁 worker 实例
|
|
|
|
* 子实例需要销毁action
|
|
|
|
*/
|
|
|
|
public terminate(): void {
|
|
|
|
this.controller.terminate();
|
|
|
|
// 设置终止标志位
|
|
|
|
this.isTerminated = true;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 实例化action
|
|
|
|
* @param Action action类
|
|
|
|
*/
|
|
|
|
protected createAction<T extends typeof WorkerBaseAction>(Action: T): InstanceType<T> {
|
|
|
|
return (new Action(this.controller, this)) as InstanceType<T>;
|
|
|
|
}
|
|
|
|
}
|