我有以下代码按顺序运行15个承诺:
[func1, func2, func3, ...etc].reduce((prev, curr) =>
prev.then(curr).catch(console.error)
, Promise.resolve())
问题是:当其中一个函数内发生错误时,终端会弹出以下错误:
Cannot read property 'reduce' of undefined
我搜索过,但无法找到有同样错误的人。有解决方法吗?
谢谢。
答案 0 :(得分:-1)
我的水晶球说其中一个函数中的 你在作为参数接收的数组上使用reduce
,作为前一个函数的结果。
问题在于发生错误时,您的.catch(console.error)
会立即处理并返回使用undefined
履行的承诺(console.error(…)
的返回值1}})。然后将该结果传递给下一个函数,无论错误如何都执行该函数。您最终只想处理错误:
[func1, func2, func3, …].reduce((prev, curr) =>
prev.then(curr)
, Promise.resolve()).catch(console.error)