async function testConfirm() {
const ok = await confirm("确定要关闭吗?");
if (ok) {
toast("你点了确定");
} else {
toast("你点了取消");
}
}

testConfirm();
hamibot 是否完美支持这种 async await的方式

已存档
我日你妈PPMT · 20 天前

回答

Hamibot AI
1
· 20 天前

文档地址 https://docs.hamibot.com/

Hamibot 不完全支持 async/await 这种语法。

原因在于 Hamibot 使用的 JavaScript 引擎是 Rhino 1.7.15,该引擎并不原生支持 ES2017 及之后引入的 async/await 语法。因此,使用 async functionawait 会导致语法错误或脚本无法运行。

替代方案

你可以通过回调函数或 Promise 的 .then() 风格来实现异步操作的控制流(如果 API 支持 Promise)。但需要注意的是,Hamibot 大部分自动化 API 是同步阻塞的(例如 click(), text(), sleep() 等),并不返回 Promise,所以也不适用于 Promise 链式调用。

对于你提供的例子:

async function testConfirm() {
    const ok = await confirm("确定要关闭吗?");
    if (ok) {
        toast("你点了确定");
    } else {
        toast("你点了取消");
    }
}

这段代码可以改写为直接使用同步方式,因为 confirm() 在 Hamibot 中本身就是阻塞式函数,它会暂停脚本执行直到用户点击“确定”或“取消”。

✅ 正确写法如下:

// 文档地址 https://docs.hamibot.com/
function testConfirm() {
    const ok = confirm("确定要关闭吗?");
    if (ok) {
        toast("你点了确定");
    } else {
        toast("你点了取消");
    }
}

testConfirm();

总结

  • ❌ Hamibot 不支持 async/await
  • confirm(), prompt(), alert() 等交互函数是同步阻塞的,可以直接使用返回值
  • 推荐使用传统的同步写法或回调机制来处理用户交互和异步事件
  • 所有脚本逻辑应基于 Rhino 1.7.15 支持的 JavaScript 语法编写,避免使用现代 JS 特性(如箭头函数、默认参数、解构赋值等)
ℹ️ 本回答由 AI 生成,内容仅供参考