【问题标题】:Correct way to use async function inside a for-loop在 for 循环中使用异步函数的正确方法
【发布时间】:2020-07-14 11:27:56
【问题描述】:

最近,我在运行 E2E 测试时遇到了一些错误,我所做的唯一更改是在原始测试代码中添加 checkColumns 逻辑,如下所示:

it('check search and sort', async () => {
  await checkLoadingAndResult();
  await checkColumns(table, ...columns); //newly added 
  await checkTableSorting();
});

checkColumns的逻辑是这样的:

export async function checkColumns(table: Table, ...columns: string[]) {
  for (const col of columns) {
    expect(await table.isColumnDisplayed(col)).toBeTruthy(`${col} is not displayed`)
  }
}

错误信息如下:

Error: ECONNREFUSED connect ECONNREFUSED 127.0.0.1:59536

我认为 checkColumns 函数可能有问题,我不知道在 for 循环中调用异步方法是否正确。我猜这个for循环是错误的原因。

【问题讨论】:

  • 假设 table.isColumnDisplayed 返回一个承诺(是一个 async 函数),那么是的,你调用它的方式就可以了。
  • 感谢 T.J.Crowder! table.isColumnDisplayed() 返回一个承诺。我已经为 ECONNREFUSED 错误苦苦挣扎了一整天。也许我需要找到导致此错误的其他原因。
  • 请显示函数isColumnDisplayed()的代码。并澄清您的代码即使现在也可以在没有await checkColumns(table, ...columns); 的情况下通过。正如djiss 所说,根据我的经验,您的错误似乎与checkColumns() 无关。

标签: javascript angular async-await protractor angular-e2e


【解决方案1】:

此错误消息不是由您使用 async / await 生成的。 这很可能是因为连接错误导致发送的 HTTP 请求失败,我在另一个框架上遇到了问题,这是由于 webdriver 没有运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-03
    • 2014-07-09
    • 1970-01-01
    • 2017-12-16
    • 2019-04-07
    • 1970-01-01
    • 2012-10-31
    相关资源
    最近更新 更多