Javascript 在express.js中,当我使用承诺时,是否需要在executor中包含reject()?

Javascript 在express.js中,当我使用承诺时,是否需要在executor中包含reject()?,javascript,node.js,express,Javascript,Node.js,Express,在我们不处理拒绝的情况下,我们必须在承诺执行人中包含拒绝吗 例如: new promise ((res)=>{ res(a); }) 没有必要,但这不是一种处理错误的非常优雅的方式-如果在您的承诺待定时抛出错误,您将希望采取其他操作并拒绝承诺,让用户知道哪里出了问题 看一看,他们很好地解释了处理承诺中错误的概念 如果您知道承诺永远不会被拒绝,则无需添加拒绝处理程序。例如,很明显,这将永远不会被拒绝,添加拒绝处理程序显然是愚蠢的: Promise.resolve("abc")

在我们不处理拒绝的情况下,我们必须在承诺执行人中包含拒绝吗

例如:

 new promise ((res)=>{
   res(a);
 })

没有必要,但这不是一种处理错误的非常优雅的方式-如果在您的承诺待定时抛出错误,您将希望采取其他操作并拒绝承诺,让用户知道哪里出了问题


看一看,他们很好地解释了处理承诺中错误的概念

如果您知道承诺永远不会被拒绝,则无需添加拒绝处理程序。例如,很明显,这将永远不会被拒绝,添加拒绝处理程序显然是愚蠢的:

Promise.resolve("abc")
    .then(result => console.log(result));
在所有其他情况下,不提供拒绝处理程序与不在
try
-
catch
中包装抛出错误的代码片段几乎是一样的。当然,这可能是有意的,但请记住,node.js会将未处理的承诺拒绝视为未捕获的错误:通过终止node.js进程。当发生未处理的承诺拒绝时,控制台上会这样说:

(节点:7741)弃用警告:未处理的承诺拒绝已弃用。将来,未处理的承诺拒绝将使用非零退出代码终止Node.js进程

综上所述:

  • 当您知道不可能拒绝时,跳过拒绝处理程序
  • 当您要求在拒绝时终止应用程序时,跳过拒绝处理程序(在Node.js的未来版本中)
  • 在所有其他情况下编写拒绝处理程序
编辑(编辑后问题变得更清楚,因此我更新了答案):


至于在承诺执行器中包含
reject()
调用,不需要添加。同样,您必须确保内部逻辑保证始终调用
resolve()

看看这个:您能重新命名您的标题吗?@davidfarugia,谢谢,这是一篇好文章!谢谢回复!