我正在考虑何时需要拒绝承诺.我发现了一些关于这个主题的问题,但找不到合适的答案. 我何时应该拒绝承诺?
这篇文章 http://howtonode.org/6666a4b74d7434144cff717c828be2c3953d46e7/promises 说:
这是主要原则吗?如果发生异常,那个人只会拒绝承诺吗?
但是在像这样的功能的情况下
findUserByEmail()
Run Code Online (Sandbox Code Playgroud)
我希望该函数返回一个用户,这样我就可以在不验证结果的情况下继续链接
findUserByEmail()
.then(sendWelcomeBackEmail)
.then(doSomeNiceStuff)
.then(etc..)
Run Code Online (Sandbox Code Playgroud)
什么是最佳/常见做法?
我所指的规范是http://promises-aplus.github.io/promises-spec/.
使用时then(),您可以返回一个承诺,并在您希望时拒绝承诺,或者您可以抛出异常拒绝承诺.
为什么api不是以这种方式设计的,对于then函数来说,它是像原始的promise构造函数一样传递一个解析和拒绝函数?
许多语言中的异常都很繁重(我也假设在javascript中),所以看起来很奇怪他们将它们用作流控制的选择.创建一个全新的promise对象并返回它,只是为了拒绝它,增加了代码膨胀IMO.如果抛出异常(例如语法错误,或者在未定义的对象上调用函数等),调试也会变得更难.