Javascript 在for循环中使用异步函数的正确方法

Javascript 在for循环中使用异步函数的正确方法,javascript,angular,async-await,protractor,angular-e2e,Javascript,Angular,Async Await,Protractor,Angular E2e,最近,我在运行E2E测试时遇到一些错误,我所做的唯一更改是在原始测试代码中添加checkColumns逻辑,如下所示: it('check search and sort', async () => { await checkLoadingAndResult(); await checkColumns(table, ...columns); //newly added await checkTableSorting(); }); checkColumns的逻辑如下所示: e

最近,我在运行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循环就是错误的原因

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

假设
table.isColumnDisplayed
返回一个承诺(是一个
async
函数),那么是的,您调用它的方式很好。谢谢T.J.Crowder!table.isColumnDisplayed()返回一个承诺。我和这个错误斗争了一整天。可能我需要找到导致此错误的其他原因。请显示函数isColumnDisplayed()的代码。并阐明您的代码始终可以通过,而无需等待checkColumns(表,…列)即使是现在。正如
djiss
所说,根据我的经验,您的错误似乎与
checkColumns()
无关。