javascript - AngularJS $resource 的默认(通用)错误处理

标签 javascript angularjs error-handling promise ngresource

我想为我的 angularjs 资源的所有方法实现一个通用错误回调,它将记录“默认错误处理程序日志”。

我的资源:

currentNgModule.factory('StatusesResource', function($resource, $timeout){
    var StatusesResource = $resource(get_gui_url_param('company.employee.statuses', true), null, {
            get: {method: 'GET', isArray: true, headers: getGenericHttpHeaders()},
            create: {method: 'POST', isArray: false, headers: getGenericHttpHeaders()},
            $update: {
                method: 'PATCH',
                isArray: false,
                headers: getGenericHttpHeaders(),
                url: get_gui_url_param('company.employee.status.pk', true)
            },
            delete: {
                method: 'DELETE',
                isArray: false,
                headers: getGenericHttpHeaders(),
                url: get_gui_url_param('company.employee.status.pk', true)
            }
        }, false);

    return StatusesResource;
});

例如执行结果:

$log.debug("Calling Resource Get")
StatusesResource.get({employee_pk: pk},
    function(){$log.debug("success")},
    function(){$log.debug("Get error")}
);

$log.debug("Calling Resource Delete")
StatusesResource.get({pk: pk},
    function(){$log.debug("success")},
    function(){$log.debug("Delete error")}
);

我想获取以下日志:

Calling Resource Get
Default Error Handler Log
Get error
Calling Resource Delete
Default Error Handler Log
Delete error

热衷于为 ng-resource 实现这个默认(初始、通用)回调(成功、错误)?

最佳答案

你可以这样做using the interceptor property of the resource action definition 。请参阅the $resource docs了解更多。

所以:

function resourceResponseErrorHandler(response) {
  $log.error("Resource error");
}

currentNgModule.factory('StatusesResource', function($resource, $timeout){
    var StatusesResource = $resource(get_gui_url_param('company.employee.statuses', true), null, {
            get: {method: 'GET', isArray: true, headers: getGenericHttpHeaders(), interceptor: { resonseError: resourceResponseErrorHandler }},
            create: {method: 'POST', isArray: false, headers: getGenericHttpHeaders(), interceptor: { resonseError: resourceResponseErrorHandler }},
            $update: {
                method: 'PATCH',
                isArray: false,
                headers: getGenericHttpHeaders(),
                url: get_gui_url_param('company.employee.status.pk', true),
                interceptor: { resonseError: resourceResponseErrorHandler }
            },
            delete: {
                method: 'DELETE',
                isArray: false,
                headers: getGenericHttpHeaders(),
                url: get_gui_url_param('company.employee.status.pk', true),
                interceptor: { resonseError: resourceResponseErrorHandler }
            }
        }, false);

    return StatusesResource;
});

关于javascript - AngularJS $resource 的默认(通用)错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25421032/

相关文章:

javascript - Slick slider 中的两位数字而不是点

javascript - Angular JS 中的验证码实现

angularjs - 重用 Umbraco 日期时间选择器

angularjs - Bower 安装卡在 json 输出 : "message": "Answer",

java - Spring Boot、全局异常处理和测试

javascript - 替换所有出现的正则表达式不起作用

javascript - AngularJS ng-重复问题并使用匹配的答案对象初始化输入

php - 引用 - 这个错误在 PHP 中意味着什么?

node.js - Node + Express : unhandled ECONNRESET error

有关 CPU 消耗的 JavaScript 命名函数和事件处理程序