Javascript 在for循环中使用异步函数的正确方法
最近,我在运行E2E测试时遇到一些错误,我所做的唯一更改是在原始测试代码中添加checkColumns逻辑,如下所示: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
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()
无关。