diff --git a/server/src/compile-service.ts b/server/src/compile-service.ts index 211b6d9..2b82a9b 100644 --- a/server/src/compile-service.ts +++ b/server/src/compile-service.ts @@ -31,8 +31,14 @@ class CompileService { return result } + /** 结束进程;立即清空状态,下一次请求会启动新进程(不会发给正在退出的旧进程) */ stop() { - this.proc?.kill() + const proc = this.proc + this.proc = undefined + this.ready = undefined + for (const waiter of this.pending.values()) waiter.reject(new Error('编译服务已停止')) + this.pending.clear() + proc?.kill() } /** 服务器启动时调用,提前完成编译器的加载和预热 */ diff --git a/server/src/language-service.ts b/server/src/language-service.ts index 268d9d1..6575083 100644 --- a/server/src/language-service.ts +++ b/server/src/language-service.ts @@ -34,8 +34,14 @@ class LanguageService { return reply } + /** 结束进程;立即清空状态,下一次请求会启动新进程(不会发给正在退出的旧进程) */ stop() { - this.proc?.kill() + const proc = this.proc + this.proc = undefined + this.ready = undefined + for (const resolve of this.pending.values()) resolve(null) + this.pending.clear() + proc?.kill() } /** 服务器启动时调用,提前完成加载和预热 */