在我们不处理拒绝的情况下,我们是否必须在承诺执行人中包含拒绝?
例如:
new promise ((res)=>{
res(a);
})
答案 0 :(得分:0)
没有必要,不,但这不是一种非常优雅的方式来处理错误 - 如果在您的承诺未决时抛出错误,您将需要采取其他行动并拒绝承诺,让用户知道什么是错。
看看MDN Promise Docs,他们很好地解释了在Promise中处理错误的概念!
答案 1 :(得分:0)
如果您知道承诺永远不会被拒绝,则无需添加拒绝处理程序。例如。很明显,这永远不会被拒绝,添加拒绝处理程序将是非常愚蠢的:
Promise.resolve("abc")
.then(result => console.log(result));
在所有其他情况下,不提供拒绝处理程序与在try
- catch
中不包含丢失错误的代码几乎相同。当然,这可能是有意的,但请记住,node.js会将未处理的promise拒绝视为未被捕获的错误:通过终止node.js进程。当发生未处理的承诺拒绝时,这就是它在控制台上所说的内容:
(node:7741)弃用警告:不推荐使用未处理的拒绝承诺。将来,未处理的承诺拒绝将使用非零退出代码终止Node.js进程。
所以,总结一下:
至于在承诺执行者中包含reject()
调用,不,您不需要添加它。但是,您必须确保内部逻辑确保始终调用resolve()
。