From f9f650ada945f7ea597b7e7b51c132c4594bd5cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=89=E5=92=B2=E6=99=BA=E5=AD=90=20Kevin=20Deng?= Date: Tue, 27 Aug 2024 16:47:21 +0800 Subject: [PATCH] fix: debounce reloadLanguageTools in monaco closes #275 closes #263 --- src/monaco/env.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/monaco/env.ts b/src/monaco/env.ts index accc8c24..54183614 100644 --- a/src/monaco/env.ts +++ b/src/monaco/env.ts @@ -8,6 +8,7 @@ import type { CreateData } from './vue.worker' import vueWorker from './vue.worker?worker' import * as languageConfigs from './language-configs' import type { LanguageService } from '@vue/language-service' +import { debounce } from '../utils' let initted = false export function initMonaco(store: Store) { @@ -155,7 +156,12 @@ export function loadMonacoEnv(store: Store) { languages.setLanguageConfiguration('typescript', languageConfigs.ts) languages.setLanguageConfiguration('css', languageConfigs.css) - store.reloadLanguageTools = () => reloadLanguageTools(store) + let languageToolsPromise: Promise | undefined + store.reloadLanguageTools = debounce(async () => { + ;(languageToolsPromise ||= reloadLanguageTools(store)).finally(() => { + languageToolsPromise = undefined + }) + }, 250) languages.onLanguage('vue', () => store.reloadLanguageTools!()) // Support for go to definition