为什么下面的所有代码片段都会收到“冗余返回等待”警告?

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

我有下面的代码路径,这些路径在“ 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>;
javascript angular intellij-idea async-await protractor
1个回答
0
投票
它不会影响代码的行为,这就是为什么测试仍然可以通过的原因。

编辑:

[从eslint读取no-return-await规则后,发现在一种情况下它不是多余的,位于try-catch块中。

async function foo() { try { return await bar(); } catch (error) {} }

await对于捕获从bar()引发的错误是必需的。

© www.soinside.com 2019 - 2024. All rights reserved.