使用[] .reduce顺序调用多个函数时处理错误

时间:2018-02-23 20:02:31

标签: javascript node.js promise

我有以下代码按顺序运行15个承诺:

[func1, func2, func3, ...etc].reduce((prev, curr) =>
  prev.then(curr).catch(console.error)
, Promise.resolve())

问题是:当其中一个函数内发生错误时,终端会弹出以下错误:

Cannot read property 'reduce' of undefined

我搜索过,但无法找到有同样错误的人。有解决方法吗?

谢谢。

1 个答案:

答案 0 :(得分:-1)

我的水晶球说其中一个函数中的 你在作为参数接收的数组上使用reduce,作为前一个函数的结果。

问题在于发生错误时,您的.catch(console.error)会立即处理并返回使用undefined履行的承诺(console.error(…)的返回值1}})。然后将该结果传递给下一个函数,无论错误如何都执行该函数。您最终只想处理错误:

[func1, func2, func3, …].reduce((prev, curr) =>
  prev.then(curr)
, Promise.resolve()).catch(console.error)