Javascript 使用[]时处理错误。减少为按顺序调用多个函数
我有以下代码按顺序运行15个承诺: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 我已经搜索过了,但找不到有同样错误的人。有解决办法吗 谢谢。我的水晶球说,在
[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之前连接行--".