catch&和catch之间有什么不同?在promisejs中失败

时间:2014-02-17 04:24:41

标签: node.js asynchronous

我在我的应用中使用promisejs。 Promisejs是一个非常酷的概念。但是catch和amp;之间的区别是什么? Promisejs失败了吗?

我仍然感到困惑。请帮忙! 谢谢,

2 个答案:

答案 0 :(得分:2)

承诺有3种可能的状态:1)待审核,2)履行和3)拒绝。如果我们专注于第三种状态,那么可能会有各种原因导致它被拒绝,这就是“抓住”和“失败”进入游戏的原因。

一个承诺可以因为发生错误而被拒绝,例如错误的书面代码或语法,或者也可以因为无法完成但没有错误而被拒绝,例如过程花费了很长时间并且您超时。如果前者发生了,那么您可以模糊地使用“失败”或“捕获”,如果后者发生了,那么您应该使用“失败”。

通常来说,使用“失败”比“捕获”具有更大的作用范围,但这取决于您期望发生的事情来决定使用哪个。

答案 1 :(得分:1)

"失败"是承诺在逻辑上退出,或承诺链不能(或不应该)完成。对于javascript异步回调,这实际上是一个错误调用。

"捕捉"是一个对异常的引用,当一个promise抛出一个Error或一连串的promise会抛出一个错误时,就可以捕获它们。可以将其视为同步try/catch块(异步执行),并且通常具有catch处理方法(来自Q

实际上,在promise框架内,这两个术语在实践中是相似的。当其他模块开始抛出Errors时,你需要更加小心(并且可能使用"最终"方法,如Q中的fin(),尽管看起来似乎只是处理使用onRejected处理程序。)