From 5f44e1dd2c52ba21d1bd1b2b9caeaa45c013b046 Mon Sep 17 00:00:00 2001 From: fofolee Date: Sat, 28 Dec 2024 16:50:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0async=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/js/composer/composerConfig.js | 2 ++ src/js/composer/generateCode.js | 17 +++++++++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/js/composer/composerConfig.js b/src/js/composer/composerConfig.js index 64249c9..fced8ea 100644 --- a/src/js/composer/composerConfig.js +++ b/src/js/composer/composerConfig.js @@ -50,12 +50,14 @@ export const commandCategories = [ value: "utools.ubrowser.goto", label: "用ubrowser打开网址", desc: "要访问的网址链接", + isAsync: true, }, { value: "ubrowser", label: "UBrowser浏览器操作", desc: "配置UBrowser浏览器操作", hasUBrowserEditor: true, + isAsync: true, }, ], }, diff --git a/src/js/composer/generateCode.js b/src/js/composer/generateCode.js index 53da9a6..1861a7d 100644 --- a/src/js/composer/generateCode.js +++ b/src/js/composer/generateCode.js @@ -1,21 +1,30 @@ export function generateCode(commandFlow) { - let code = []; + // 检查是否包含异步函数 + const hasAsyncFunction = commandFlow.some((cmd) => cmd.isAsync); + + let code = hasAsyncFunction ? ["async function run() {"] : []; + const indent = hasAsyncFunction ? " " : ""; commandFlow.forEach((cmd) => { - let line = ""; + let line = indent; if (cmd.outputVariable) { line += `let ${cmd.outputVariable} = `; } if (cmd.value === "ubrowser") { - line += cmd.argv; + line += `await ${cmd.argv}`; } else { - line += `${cmd.value}(${cmd.argv})`; + line += `${cmd.isAsync ? "await " : ""}${cmd.value}(${cmd.argv})`; } code.push(line); }); + if (hasAsyncFunction) { + code.push("}"); // Close the async function + code.push("run();"); // Call the function + } + return code.join("\n"); }