diff --git a/resources/assets/js/functions/common.js b/resources/assets/js/functions/common.js index beb99a7d9..91b07aebd 100755 --- a/resources/assets/js/functions/common.js +++ b/resources/assets/js/functions/common.js @@ -1361,6 +1361,7 @@ const timezone = require("dayjs/plugin/timezone"); } this.__IDBTimer[key] = setTimeout(async _ => { await localforage.setItem(key, value) + delete this.__IDBTimer[key] }, delay) }, diff --git a/resources/assets/js/store/actions.js b/resources/assets/js/store/actions.js index 325bda1c3..903c2fe10 100644 --- a/resources/assets/js/store/actions.js +++ b/resources/assets/js/store/actions.js @@ -1,9 +1,10 @@ import * as openpgp from 'openpgp_hi/lightweight'; -import {debounce} from "lodash"; import {initLanguage, languageList, languageName} from "../language"; import {$callData, $urlSafe, SSEClient} from './utils' import emitter from "./events"; +const saveDraftTimers = {} + export default { /** * 预加载 @@ -3186,7 +3187,19 @@ export default { window.__dialogDraft = {id, content} return } - commit('SET_DIALOG_DRAFT', {id, content}) + + // 清除已有的计时器 + if (saveDraftTimers[id]) { + clearTimeout(saveDraftTimers[id]) + delete saveDraftTimers[id] + } + + // 创建新的计时器 + saveDraftTimers[id] = setTimeout(() => { + commit('SET_DIALOG_DRAFT', {id, content}) + delete saveDraftTimers[id] + resolve() + }, content ? 600 : 0) }, /** *****************************************************************************************/