Javascript JS承诺:错误处理概念
我有一个处理ajax调用的函数,另一个处理错误的函数。目标是:将错误处理为更好的格式,以便以后使用(请参见下面的示例) 问题是:Javascript JS承诺:错误处理概念,javascript,error-handling,promise,Javascript,Error Handling,Promise,我有一个处理ajax调用的函数,另一个处理错误的函数。目标是:将错误处理为更好的格式,以便以后使用(请参见下面的示例) 问题是:.then()的第二次回调没有被调用 守则: function _handleError(error) { //bring error info in better usable format ... return errorRes; } function getSth(...) { ... return $.ajax({
.then()
的第二次回调没有被调用
守则:
function _handleError(error) {
//bring error info in better usable format
...
return errorRes;
}
function getSth(...) {
...
return $.ajax({
url: baseUrl + query,
type: "GET",
headers: {
...
}
}).then(function (data) {
var results = data.d.results;
... //Do mapping stuff
return results;
}, _handleError);
}
我将如何实施它:
getSth(...).then(function(results){
...
}, function(err){
console.log(err);
... //Do more with error info
});
给
.then()
的第二个函数永远不会被调用,\u handleError()
是。我很确定我误解了承诺的一些概念。如果在调用\u handleError
后,您希望承诺链继续被拒绝,那么您需要抛出
或从\u handleError
中返回被拒绝的承诺
如果您不返回任何内容或仅从handleError
返回一个正常值,则Promise基础结构假定您“处理”了错误,并且它不再是错误。这是在try/catch
之后建模的,如果catch
出现错误并且没有重新触发,则认为异常已处理,不会传播到更高级别
例如:
function _handleError(err) {
// do something to the error value
let newError = new Error(...);
// rethrow the error so the promise continues as rejected
// and so that the next error handler on that promise chain will get called
throw newError;
}