Angular JSON-RPC:处理错误
Angular JSON-RPC: processing error
我正在尝试改进用于调用远程JSON-RPC服务的AngularJS服务。根据 JSON-RPC 规范,当服务器端发生异常时,响应应包含具有相同描述的错误对象:
response = {
jsonrpc: "2.0",
result: null,
error: "Description of the error",
id: 1,
}
。其中"id"是原始发送到服务器的请求的标识符。
我正在尝试改进的 Angular 组件 (https://github.com/ajsd/angular-jsonrpc) 使用$http转换器处理来自服务器的响应。我修改了原来的变压器,所以新的变压器看起来像这样:
transforms.push(function(data) {
//Original code: return data.id === id ? data.result || data.error : null;
if (data.error !== null) {
throw data.error;
}
if (data.id !== id) {
throw '[jsonrpc] Wrong response ID, id = ' + data.id;
}
return data.result;
});
如您所见,我抛出了一个带有错误描述的异常;这是一个非常糟糕的解决方案,因为此服务基于$http承诺,因此,该服务的调用者将发现很难捕获异常。
如何从$http转换器中调用用户在调用$http服务时最初设置的"错误"承诺?
$http.get(url).then(success(data) {...}, error(data) {...}};
这是一种正确的方法,还是我应该更好地将我的修改基于拦截器?
如果你保留了原来的代码,你可以定义一个使用 jsonrpc 模块的服务:
angular.module('myApp').
service('jsonrpcservice', function(jsonrpc) {
var service = jsonrpc.newService('svc');
this.get = service.createMethod('getData');
});
..在控制器的某处:
jsonrpcservice.get({params}).success(function(result){}).error(function(err){});
您可以在返回的 .error() 中处理错误 $http
相关文章:
- javascript:如何在antlr生成的Lexer中进行错误处理
- 生成pdf或其他非html文件时的错误处理
- sailsjs在创建两个模型时的错误处理
- 为什么没有调用我的流错误处理程序
- 错误处理try&catch+回调
- EventSource中的错误处理
- Angular JS中的通用Ajax错误处理-拦截器
- Sinon Mocha节点错误处理
- 如果文件不存在,fs.watch是否有错误处理程序
- Javascript初始化和错误处理
- AngularJS错误处理:根据错误数组显示错误
- JQuery 图像错误处理
- BreezeJS中央错误处理程序和自动重试
- 文件下载html与错误处理FileNotFound
- 使用mongoose保存多个文档时的错误处理
- Node.js如何知道回调的第一个参数是否是错误处理程序
- Meteor JavaScript-错误处理
- AJAX自定义错误处理代码问题
- 正在获取丢失的错误处理程序套接字消息,无法读取属性'timerID'使用Node.js和Socket.i
- 为什么不't JavaScript库使用错误处理