在一个共同的承诺模式resolve
代表成功,而reject
代表失败。
但是在基于承诺的算法中产生布尔结果时success
/ failure
的概念不适用,因此没有明确决定哪个结果要被解决或拒绝。
即使结果不是布尔值,也可能无法明确区分为适合解析或拒绝。
在这种情况下,是否有任何关于选择决心与拒绝模式的官方建议?优选地,有或没有知道哪种类型的结果将比另一种更多。
答案 0 :(得分:1)
拒绝意味着发生了异常/错误。存在语言错误,例如解除引用空指针和应用程序错误(例如错误的HTTP请求)。如何定义什么是异常以及什么不是,完全取决于您。 false
值可能非常resolve
d,因为它是一个非常好的值,或者它可以被您的应用视为一个坏值(比如,它在逻辑上永远不应该是假的,因此它是例外情况,然后您可以reject
代替它。
答案 1 :(得分:0)
对于连续链接的承诺,拒绝和解决之间存在重要区别,如:
a().then(b).then(c).catch(d);
在这种情况下,a()
解析或拒绝会产生很大的差异,因为如果它拒绝,则不会调用b
和c
。
因此,出于链接能力的目的,成功的结果应该以您想要返回的任何值来解决,并且您不会仅使用拒绝来发出false
值,因为这会破坏正常链接其他值的能力异步操作。
拒绝应该发出错误信号,连续链接操作不应该继续(除非您专门处理错误情况并将其编码为继续)。
答案 2 :(得分:-1)
布尔值false和异常之间存在差异。