我在我的应用中使用promisejs。 Promisejs是一个非常酷的概念。但是catch和amp;之间的区别是什么? Promisejs失败了吗?
我仍然感到困惑。请帮忙! 谢谢,
答案 0 :(得分:2)
承诺有3种可能的状态:1)待审核,2)履行和3)拒绝。如果我们专注于第三种状态,那么可能会有各种原因导致它被拒绝,这就是“抓住”和“失败”进入游戏的原因。
一个承诺可以因为发生错误而被拒绝,例如错误的书面代码或语法,或者也可以因为无法完成但没有错误而被拒绝,例如过程花费了很长时间并且您超时。如果前者发生了,那么您可以模糊地使用“失败”或“捕获”,如果后者发生了,那么您应该使用“失败”。
通常来说,使用“失败”比“捕获”具有更大的作用范围,但这取决于您期望发生的事情来决定使用哪个。
答案 1 :(得分:1)
"失败"是承诺在逻辑上退出,或承诺链不能(或不应该)完成。对于javascript异步回调,这实际上是一个错误调用。
"捕捉"是一个对异常的引用,当一个promise抛出一个Error
或一连串的promise会抛出一个错误时,就可以捕获它们。可以将其视为同步try/catch
块(异步执行),并且通常具有catch
处理方法(来自Q)
实际上,在promise框架内,这两个术语在实践中是相似的。当其他模块开始抛出Errors
时,你需要更加小心(并且可能使用"最终"方法,如Q中的fin()
,尽管看起来似乎只是处理使用onRejected
处理程序。)