有没有一种方法可以为诺言提供默认的errorCallback,以便如果用户提供了errorCallback,则不会调用默认的errorCallback。
function getFoo() {
// TODO magic goes here to setup defaultErrorCallback as default
return $http.get("/not_exists");
};
function defaultErrorCallback() { console.log("DDD"); }
function customCallback() { console.log("CCC"); }
getFoo().then(fooSuccess);
// output: DDD
getFoo().then(fooSuccess, customCallback);
// output: CCC
最佳答案
我不相信有一种方法可以对单个的诺言做到这一点,但是有可能override Angular's default error handling在Angular1.6中应该只处理未在其他地方捕获的错误:
angular.
module('exceptionOverwrite', []).
factory('$exceptionHandler', ['alertService', function(alertService) {
return function myExceptionHandler(exception, cause) {
alertService.alertError(exception, cause);
};
}]);
如果要添加处理以专门处理
getFoo()
中的错误,则可以让getFoo()
向错误中注入一些信息以使其可识别:function getFoo() {
return $http.get("/not_exists")
.catch(function (error) {
error.errorSource = 'getFoo';
throw error;
});
}
// elsewhere...
angular.
module('exceptionOverwrite', []).
factory('$exceptionHandler', ['alertService', function(alertService) {
return function myExceptionHandler(exception, cause) {
if(exception.errorSource = 'getFoo') {
alertService.alertError(exception, cause);
} else {
// default error handling
}
};
}]);
关于javascript - 是否可能有一个默认的errorCallback来保证?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42850080/