【发布时间】:2014-03-04 04:43:31
【问题描述】:
我所指的规范位于http://promises-aplus.github.io/promises-spec/。
使用then() 时,您可以返回一个promise,并在需要时拒绝该promise,也可以抛出一个异常来拒绝一个promise。
为什么 api 没有以这样的方式设计,对于 then 函数,它像原始的 Promise 构造函数一样传递一个解析和拒绝函数?
在许多语言中异常很重(我也假设在 javascript 中),所以它们将它们用作流控制的选择似乎很奇怪。创建一个全新的承诺对象并返回它,只是为了拒绝它,增加了代码膨胀 IMO。如果抛出异常(例如语法错误,或者在未定义的对象上调用函数等),调试也会变得更加困难。
【问题讨论】:
-
你没有有抛出异常来拒绝承诺,但如果你抛出异常,结果就是拒绝。
-
You are missing the point of promises tl;dr:您不想要编写现在同时处理抛出的异常和承诺拒绝的代码,所有这些应该在
.catch()处理。 -
Here's an example 的 2 通道错误处理与 1 通道错误处理相比,是回调的巨大优势
标签: javascript promise