Javascript catch()和“catch”有哪些错误;错误处理程序";然后(successHandler,failureHandler)检测?
我正在学习承诺,以便在尝试使用Firebase之前能够更好地理解。我是新来的,我一直在阅读以下关于Javascript catch()和“catch”有哪些错误;错误处理程序";然后(successHandler,failureHandler)检测?,javascript,promise,Javascript,Promise,我正在学习承诺,以便在尝试使用Firebase之前能够更好地理解。我是新来的,我一直在阅读以下关于catch(): :一篇有一些练习的文章 :关于为什么承诺链之后总是需要一个catch() :关于catch()和then() 通过阅读,我得出以下结论: catch()。这些“意外异常”似乎可以被我的的故障处理程序检测到。然而,它无法区分“正常故障”和这些类型的故障。我假设其中一个“意外异常”是当您试图访问null元素的某些属性时 似乎我还可以链接then(successHandler,fa
catch()
:
- :一篇有一些练习的文章
- :关于为什么承诺链之后总是需要一个
catch()
- :关于
和catch()
then()
catch()。这些“意外异常”似乎可以被我的
的
故障处理程序
检测到。然而,它无法区分“正常故障”和这些类型的故障。我假设其中一个“意外异常”是当您试图访问
元素的某些属性时null
- 似乎我还可以链接
,然后继续执行then(successHandler,failureHandler)
块以允许更精细的控制,如中所述。当我想在某件事情失败时做一些其他事情(在本例中是“正常失败”,而不是“意外异常”)并将被拒绝的承诺传递给下一个catch()
然后
进行处理时,这很有用,因此可能会产生与失败部分成功时的结果截然不同的结果。如果我的
或successHandler
中出现故障,我还可以在链的末尾使用failureHandler
捕获“意外异常”catch()
null
exception是“意外异常”的一个例子(这个假设正确吗?)。但是,failureHandler
检测到哪些其他错误,以及catch()
检测到哪些其他“意外异常”
我在上面还提到,[then
]无法区分正常故障和这些类型的故障。对吗?如果是,为什么重要
编辑
在阅读了更多内容之后,似乎如果在链的顶部拒绝了承诺,那么下面的将被忽略,我立即转到catch()
块。这意味着我上面的结论:当我想做其他事情时,如果某件事情失败,并将被拒绝的承诺传递给下一个,那么处理的是不正确的,那么这很有用。如果是这样的话,如果我的链末端已经有了一个catch()
,我就不再需要为我的然后块的每一个故障处理程序
。但是,在第三环节中提到:
争论的焦点是,通常您希望捕获过程中每一步的错误
处理,并且你不应该在链中使用它。这个
期望的是,您只有一个最终处理程序来处理所有事务
错误-当您使用“反模式”时,某些
那么回调就不会被处理
然而,这种模式实际上非常有用:当您想要处理
这一步中发生的错误,以及您希望执行的操作
在没有发生错误的情况下完全不同的事情,即
错误是不可恢复的。请注意,这是您的控制分支
流动。当然,这有时是需要的
我的结论是,被拒绝的承诺将被传递给下一个,然后处理,因为我读了上面的内容。那么和您想在没有发生错误时做一些完全不同的事情是什么意思呢?即当错误不可恢复时意味着什么?根据我的理解,声明拒绝处理程序的两种方法之间没有真正的区别
为了成功,很明显,我们将找到履行处理程序:
var promise=新承诺(函数(解析、拒绝){
setTimeout(函数(){
决心(“成功”);
}, 300);
}).然后(功能(成功){
console.log(0,成功)
},功能(故障){
console.log(1,失败)
}).catch(功能(故障){
console.log(2,失败)
});代码>