【发布时间】:2019-04-23 17:32:52
【问题描述】:
如果在父 Promise 中调用的 Promise 抛出错误,我们应该捕获该错误还是自动捕获它?
例子:
function p1(val)
{
return new Promise((resolve, reject) => {
//do something with val
if(val == true)
reject(err);
p2()
.then(result => resolve(result)
.catch(reject); //is this line necessary?
});
}
function p2()
{
return new Promise((resolve, reject) => {
//resolve or reject...
});
}
【问题讨论】:
-
如果 p2 返回一个 Promise,那么新的 Promise 有什么意义呢?您应该很少使用它。
-
如果你真的返回了 p2,而你现在没有这样做,那么可以在更高的级别上进行捕获。例如。通过将捕获附加到 p1
-
随便
function p1() { return p2(); }? -
我不认为这是 相当 the construction antipattern question 的复制品。它肯定很接近,但如果您出于某种原因正在使用
new Promise,不,reject不是自动的。 -
谢谢@T.J.Crowder 我会尽快更新我的问题
标签: javascript node.js promise