在异步/等待中正确处理和传递错误

时间:2018-08-16 17:26:19

标签: node.js async-await ecmascript-7

我正在编写一个小的Node.js命令行实用程序。我将所有内容打包在一个文件中,简化后的结构看起来像这样:

(async() => {
  await someAsyncFunction();
  /* 1 */

  // Iterate through collection and call async functions serially
  array.forEach(async (element) => {
    await anotherAsyncFunction(element);    
  });
})().catch(err => console.log);

现在,如果我在第1点抛出一个错误,那么该错误会传递到底部捕获。但是,我想向anotherAsyncFunction及其周围的for循环添加错误处理。

我尝试创建以下辅助函数:

async function asyncForEach(array, fn) {
  for (let i = 0; i < array.length; i+=1) {
    await fn(array[index], index, array);
  }
}

然后我重新编写了原始的迭代代码,如下所示:

try {
  await asyncForEach(array, async (element) => {
    await anotherAsyncFunction(element);
  });
} catch (err) {
  throw err;
}

尽管这确实可行,但似乎非常冗长。有解决这个问题的更好方法吗?

谢谢。

0 个答案:

没有答案