Javascript 使用[]时处理错误。减少为按顺序调用多个函数

Javascript 使用[]时处理错误。减少为按顺序调用多个函数,javascript,node.js,promise,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 我已经搜索过了,但找不到有同样错误的人。有解决办法吗 谢谢。我的水晶球说,在

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

[func1, func2, func3, ...etc].reduce((prev, curr) =>
  prev.then(curr).catch(console.error)
, Promise.resolve())
问题是:当其中一个函数内部发生错误时,我的终端中将弹出以下错误:

Cannot read property 'reduce' of undefined
我已经搜索过了,但找不到有同样错误的人。有解决办法吗

谢谢。

我的水晶球说,在其中一个函数的内部,您正在对作为参数接收的数组使用
reduce
,作为上一个函数的结果

问题是,当发生错误时,您的
.catch(console.error)
会立即处理它,并返回一个承诺,该承诺在
未定义的情况下得到满足(
console.error(…)
)。然后将此结果传递给下一个函数,该函数将在不考虑错误的情况下执行。您最终只希望处理错误:

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

在其中一个函数中调用
reduce
reduce
中的错误不应导致原始reduce上出现该消息。这可能意味着
func1
中的一个。
funcN
有另一个reduce语句,该语句失败。。。检查您的错误堆栈,并可能将其粘贴到此处!请发布一个带有一些简单的演示函数的错误。你确定它可以工作吗?因为我不这么认为,prev仍然是未定义的。
prev
从来都不是未定义的,它总是一个承诺(在我的代码中以及在原始代码中)。(我猜)问题在于,这是一个承诺,它是用
未定义的
实现的。嗨,Bergi!事实上,我不是,我正在解析一个JSON,它不是真正的JSON来测试它。@Celo是的,这是第一个错误。它应该被记录下来,并且链承诺被解析为
未定义
。然后,链中的下一个函数尝试调用假定的JSON数组上的
.reduce
,这当然不起作用,并导致您现在询问的第二条错误消息。但正如我在问题注释中所说的,对于任何更详细的诊断,我们需要一个非工作代码的完整示例。我理解。事实上,我能解决这个问题。我没有使用
,所以解释器在reduce之前连接行--".