From c36efe6805d9a870d2e42b0023459591c3511bbe Mon Sep 17 00:00:00 2001 From: X Date: Thu, 5 Feb 2026 16:29:46 +0000 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E5=82=B3=E6=AA=94=E6=A1=88=E5=88=B0?= =?UTF-8?q?=E3=80=8Cmodules/scheduled-tasks=E3=80=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/scheduled-tasks/scheduled-tasks.js | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/modules/scheduled-tasks/scheduled-tasks.js b/modules/scheduled-tasks/scheduled-tasks.js index fd3b45d..4d92f03 100644 --- a/modules/scheduled-tasks/scheduled-tasks.js +++ b/modules/scheduled-tasks/scheduled-tasks.js @@ -541,9 +541,10 @@ async function __runTaskSingleInstance(taskName, jsRunner, signature = null) { }; const clearIntervalSafe = (id) => { clearInterval(id); intervals.delete(id); }; + let jsRunnerResult; entry.completion = (async () => { try { - await jsRunner({ addListener, setTimeoutSafe, clearTimeoutSafe, setIntervalSafe, clearIntervalSafe, abortSignal: abort.signal }); + jsRunnerResult = await jsRunner({ addListener, setTimeoutSafe, clearTimeoutSafe, setIntervalSafe, clearIntervalSafe, abortSignal: abort.signal }); } finally { try { abort.abort(); } catch {} try { @@ -553,6 +554,7 @@ async function __runTaskSingleInstance(taskName, jsRunner, signature = null) { try { window?.dispatchEvent?.(new CustomEvent('xiaobaix-task-cleaned', { detail: { taskName, signature } })); } catch {} __taskRunMap.delete(taskName); } + return jsRunnerResult; })(); return entry.completion; @@ -585,7 +587,7 @@ async function processTaskCommands(commands, taskName) { if (beforeJs) result = await executeSlashCommand(beforeJs); const jsCode = match[1].trim(); if (jsCode) { - try { await executeTaskJS(jsCode, taskName || 'AnonymousTask'); } + try { result = await executeTaskJS(jsCode, taskName || 'AnonymousTask'); } catch (error) { console.error(`[任务JS执行错误] ${error.message}`); try { xbLog.error('scheduledTasks', `taskjs error task=${String(taskName || 'AnonymousTask')}`, error); } catch {} @@ -797,20 +799,21 @@ async function executeTaskJS(jsCode, taskName = 'AnonymousTask') { checkStatus(); }); + let result; try { - await runInScope(jsCode); + result = await runInScope(jsCode); await waitForAsyncSettled(); } finally { try { hardCleanup(); } finally { restoreGlobals(); } } + return result; }; if (isLightTask) { - __runTaskSingleInstance(stableKey, jsRunner, codeSig); - return; + return __runTaskSingleInstance(stableKey, jsRunner, codeSig); } - await __runTaskSingleInstance(stableKey, jsRunner, codeSig); + return await __runTaskSingleInstance(stableKey, jsRunner, codeSig); } function handleTaskMessage(event) {