JavaScript 在异步函数上等待

问题描述 投票:0回答:1

简单的问题,假设我有一个这样的函数(在这个例子中,它在一个类中,使用自动化框架):

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

然后通过

在另一个文件中调用它

await new LogoutPage(driver).logout()

我真的需要第二个

await
吗?同样,如果我们返回带有
await
IE:

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

打电话时我还需要

await
吗?

javascript asynchronous async-await
1个回答
0
投票

是的,您需要第二个

await
。看看当您删除 first
await

时会发生什么
async function LoggedOut(): Promise<boolean> {
    return isVisible('#logged_out_logo');
}

然后,您可以删除

async

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

你看,返回类型将保持

Promise<>
。 async/await 几乎是避免函数内部承诺的语法糖。

因此,对于调用者来说,这仍然是一个需要等待的承诺...

await new LogoutPage(driver).logout()
// continue

或“然后”

new LogoutPage(driver).logout().then(() => {
  // continue
})
© www.soinside.com 2019 - 2024. All rights reserved.