我有下面的代码路径,这些路径在“ IntelliJ”中给出Redundant return await警告:
注意:我的问题有-ve票。我最有可能遗漏了一些基本的东西-您能在评论/问题中指出我遗漏了什么吗?我花了大量时间问这个问题-如果您添加-ve票的详细信息,这将很有帮助。
import {browser, By, element, promise, protractor} from 'protractor';
async randomMethod(): Promise<string> {
return await element.all(By.css('.random-class')).first().getText();
}
async randomMethod4() {
return await browser.driver.get(this.url);
}
[请注意,仅通过上述方法删除await即可摆脱警告(如以下代码段所示)。但是我的问题是,为什么以下方法可以“返回等待”,但不能“高于”呢?
async randomMethod(): Promise<string> {
return element.all(By.css('.random-class')).first().getText();
}
而以下代码路径没有给出相同的警告:
async randomMethod2(): Promise<number> {
return await element.all(By.css('.mat-row')).count();
}
async randomMethod3() {
return await element.all(By.css('.random-class')).first();
}
尽管我的考试通过了,但我试图详细了解发出警告的原因,因为我可能在这里遗漏了一些细微的东西。我想知道它是否与嵌套承诺有关,在代码路径的情况下,IntelliJ为上面所示的代码路径提供警告消息以进行警告。任何想法都是有帮助的。
return await element.all(By.css('.random-class')).first().getText();
顺便说一句,以下是函数定义/原型:
first(): ElementFinder;
count(): wdpromise.Promise<number>;
getText(): promise.Promise<string>;
get(url: string): promise.Promise<void>;
编辑:
[从eslint读取no-return-await规则后,发现在一种情况下它不是多余的,位于try-catch块中。async function foo() {
try {
return await bar();
} catch (error) {}
}
await
对于捕获从bar()
引发的错误是必需的。