diff --git a/packages/editor/src/initService.ts b/packages/editor/src/initService.ts index a932e7b3..4bffbdfb 100644 --- a/packages/editor/src/initService.ts +++ b/packages/editor/src/initService.ts @@ -45,6 +45,7 @@ export const initServiceState = ( codeBlockService, keybindingService, dataSourceService, + depService, }: Services, ) => { // 初始值变化,重新设置节点信息 @@ -203,6 +204,7 @@ export const initServiceState = ( componentListService.resetState(); codeBlockService.resetState(); keybindingService.reset(); + depService.reset(); }); }; diff --git a/packages/editor/src/services/dep.ts b/packages/editor/src/services/dep.ts index 47af5070..d78a229c 100644 --- a/packages/editor/src/services/dep.ts +++ b/packages/editor/src/services/dep.ts @@ -176,6 +176,23 @@ class Dep extends BaseService { return super.once(eventName, listener as any); } + public reset() { + idleTask.removeAllListeners(); + idleTask.clearTasks(); + + for (const type of Object.keys(this.watcher.getTargetsList())) { + this.removeTargets(type); + } + + this.set('collecting', false); + } + + public destroy() { + this.removeAllListeners(); + this.reset(); + this.removeAllPlugins(); + } + public emit(eventName: Name, ...args: Param) { return super.emit(eventName, ...args); } diff --git a/packages/editor/src/utils/idle-task.ts b/packages/editor/src/utils/idle-task.ts index 876b8e97..a1fd628a 100644 --- a/packages/editor/src/utils/idle-task.ts +++ b/packages/editor/src/utils/idle-task.ts @@ -54,6 +54,7 @@ export class IdleTask extends EventEmitter { this.hightLevelTaskList = []; this.taskList = []; + this.taskHandle = null; } public on(