async function testConfirm() {
const ok = await confirm("确定要关闭吗?");
if (ok) {
toast("你点了确定");
} else {
toast("你点了取消");
}
}
testConfirm();
hamibot 是否完美支持这种 async await的方式
回答
文档地址 https://docs.hamibot.com/
Hamibot 不完全支持 async/await 这种语法。
原因在于 Hamibot 使用的 JavaScript 引擎是 Rhino 1.7.15,该引擎并不原生支持 ES2017 及之后引入的 async/await 语法。因此,使用 async function 或 await 会导致语法错误或脚本无法运行。
替代方案
你可以通过回调函数或 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 生成,内容仅供参考