简单的问题,假设我有一个这样的函数(在这个例子中,它在一个类中,使用自动化框架):
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
吗?
是的,您需要第二个
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
})