量角器使用它自己的承诺库(实际上它们是在selenium模块中实现的,但这并不重要),并且它的定义没有正确地展开默认承诺(内置承诺)。如果使用量角器,则结果与预期一致:
private initElements(): promise.Promise<void> {
// Do stuff here
return promise.fullyResolved(null)
}
navigateToUpdate(name: string) { // return type is inferred to promise.Promise<void>
return browser.get(`/policies/${name}`)
.then(() => browser.waitForAngular())
.then(() => browser.wait(this.statusIsPresent))
.then(() => this.initElements());
}
它还可以与
async/await
async navigateToUpdate(name: string) {// return type is inferred to promise.Promise<void>
await browser.get(`/policies/${name}`);
await browser.waitForAngular();
await browser.wait(this.statusIsPresent);
await this.initElements();
}
如果有人试图读取承诺返回类型,这将导致错误,因为实现将打开承诺,而类型系统不知道这一点,并且它将告诉您承诺的结果是承诺,而实际上不是承诺。