You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于调用JavaScript async函数时是否需额外添加await的技术问询

Async函数调用时的await使用问题

1. 无返回值的async函数调用

先看定义的logout函数:

async logout() {
    await this.page.click('#logout');
}

调用时写await new LogoutPage(driver).logout()是必须加await的。

原因很直接:所有async函数的返回值都是Promise,哪怕函数内部没有显式返回值。如果不加await,代码不会等待logout里的登出点击操作完成就继续往下执行,很容易导致后续逻辑和登出操作的时序混乱(比如还没完成登出就执行下一个需要已登出状态的操作)。加await就是为了确保这个异步操作彻底完成后,再推进后续代码。

2. 返回await结果的async函数调用

再看这个返回布尔值的async函数:

async LoggedOut(): Promise<boolean> {
    return await isVisible('#logged_out_logo');
}

调用这个函数时同样需要加await。

因为async函数的返回值会被自动包装成Promise,哪怕内部用了return await,直接调用拿到的还是Promise对象,不是真正的布尔值。比如你写const isLoggedOut = new LogoutPage(driver).LoggedOut(),isLoggedOut其实是个Promise,必须加await才能获取到实际的true/false结果,否则没法直接用这个值做判断逻辑。

内容的提问来源于stack exchange,提问作者msmith1114

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 02:05:04