【发布时间】:2020-11-29 08:15:23
【问题描述】:
我正在尝试在我的 node + express 应用程序中设计一个带有 catch 错误的承诺链。在下面的示例中,如果任何一个“then”函数出错,我将不得不向后工作以从错误消息中找到哪一个。有没有更简单的方法来编写 catch 函数?
new Promise(function(resolve, reject) {
resolve(groupId);
})
.then(sid => getGuestGroup2(sid))matching carts
.then(group =>getProducts(group))//add products
.then(result2 =>getPrices(result2))
.catch(error => { // (**)
console.log('Error on GET cart.js: '+error);
res.sendStatus(500);
});
【问题讨论】:
-
错误堆栈包含行号。这应该可以准确地告诉您链条的哪一部分失败了。此外,您对 promise 构造函数的滥用可以简化为
Promise.resolve(groupId)。 -
如果您想要不同的错误处理,也可以散布捕获和然后。换句话说,如果你真的想抓住所有东西,把 catch 放在最后是很方便的,但它通常不太理想。
-
"找到哪一个" - 你为什么关心这个?错误(消息)应该包含所有相关细节,我看不出使用它有什么问题。
-
仅供参考,在您显示的代码中,
.then(sid => getGuestGroup2(sid))matching carts是一个语法错误。 -
要查看完整错误,您需要将
console.log('Error on GET cart.js: '+error);更改为console.log('Error on GET cart.js: ', error);。
标签: javascript node.js express promise es6-promise