在Q-promise库中,如果存在TypeError: Cannot read property 'blah' of undefined
之类的随机问题,则可以通过Q.catch()
块处理。
但是在Parse-promise库中,如果then()
块内存在这样的问题,除了在每个then()
块中放置一个try / catch之外,我目前看不到处理它的方法!
我错过了什么吗?什么是解析承诺的q.catch()等价物?
或者,如果没有每个then()
块中的try / catch块,就无法捕获此类错误?
.then(function(data)){
try{
// do something with data that might throw an exception/error
}
catch(exception){
return Parse.Promose.error(exception);
}
})
答案 0 :(得分:1)
根据spec,所有Promises / A +兼容库(包括Parse-promise库)中的.then()
函数需要两次回调 - onFulfilled
和onRejected
。如果第一个参数即。 onFulfilled
抛出异常,承诺被拒绝,第二个参数将被调用。
换句话说,您的示例可以重写:
.then(function (data) {
// do something with data that might throw an exception/error
}, function (exception) {
// handle the exception
})
此外,Parse-promises(像许多承诺库一样)提供additional APIs来使这个更整洁。具体来说,如果拒绝承诺,您可以使用.fail()连接回调来调用。