在promise数据中解析vs拒绝

时间:2015-10-17 18:58:47

标签: promise

在一个共同的承诺模式resolve代表成功,而reject代表失败。

但是在基于承诺的算法中产生布尔结果时success / failure的概念不适用,因此没有明确决定哪个结果要被解决或拒绝。

即使结果不是布尔值,也可能无法明确区分为适合解析或拒绝。

在这种情况下,是否有任何关于选择决心与拒绝模式的官方建议?优选地,有或没有知道哪种类型的结果将比另一种更多。

3 个答案:

答案 0 :(得分:1)

拒绝意味着发生了异常/错误。存在语言错误,例如解除引用空指针和应用程序错误(例如错误的HTTP请求)。如何定义什么是异常以及什么不是,完全取决于您。 false值可能非常resolve d,因为它是一个非常好的值,或者它可以被您的应用视为一个坏值(比如,它在逻辑上永远不应该是假的,因此它是例外情况,然后您可以reject代替它。

答案 1 :(得分:0)

对于连续链接的承诺,拒绝和解决之间存在重要区别,如:

a().then(b).then(c).catch(d);

在这种情况下,a()解析或拒绝会产生很大的差异,因为如果它拒绝,则不会调用bc

因此,出于链接能力的目的,成功的结果应该以您想要返回的任何值来解决,并且您不会仅使用拒绝来发出false值,因为这会破坏正常链接其他值的能力异步操作。

拒绝应该发出错误信号,连续链接操作不应该继续(除非您专门处理错误情况并将其编码为继续)。

答案 2 :(得分:-1)

布尔值false和异常之间存在差异。