We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
前端需要面对各式各样的客户端环境,还需要考虑不同的网络状况。
接口的请求并不总是一帆风顺的,有可能在客户端这边出问题了,也有可能服务器端出问题了,甚至也有可能中间的传输过程出了问题。
所以需要对接口的异常进行捕获和处理以给用户更加有效的反馈,但如果项目中接口比较多的话,那我们就应该考虑如何去实现异常的统一处理了。
以依赖jQuery项目举例,通常是用$.ajax()方法去请求接口数据。
jQuery
$.ajax()
我们知道可以通过ajax的返回值再调用jqXHR.fail(function( jqXHR, textStatus, errorThrown ) {});来处理请求的异常(超时、中止、解析错误等),如下所示:
jqXHR.fail(function( jqXHR, textStatus, errorThrown ) {});
$.ajax({ ... }).fail(function(jqXHR, textStatus, errorThrown){ if(textStatus == "timeout"){ alert("请求超时"); }else if(textStatus == "parsererror"){ alert("数据解析失败"); }else if(textStatus == "abort"){ alert("请求被中止"); }else{ alert("请求出错:" + textStatus + "(错误码是" + jqXHR.status + ")"); } });
可能在某个接口处理异常时是直接弹窗提示,有的接口可能需要在页面上打印出错信息,如何统一这种需求呢?
编写一个共用函数:
function errorHandler(args, callback) { var description; var code; var message; var unknown = "未知"; //容错处理 if (args && args.length >= 2) { code = args[0].status || unknown; description = args[1] || unknown; } else { code = unknown; description = unknown; } //调用回调函数 if (callback) { if(description == "timeout"){ message = "请求超时"; }else if(description == "parsererror"){ message = "数据解析失败"; }else if(description == "abort"){ message = "请求未发出"; }else{ message = "请求出错:" + description + " (错误码:" + code + ")"; } callback(message); } }
在实际接口中调用:
$.ajax({ ... }).fail(function(){ errorHandler(arguments, function(message){ alert(message); }); });
The text was updated successfully, but these errors were encountered:
No branches or pull requests
背景
前端需要面对各式各样的客户端环境,还需要考虑不同的网络状况。
接口的请求并不总是一帆风顺的,有可能在客户端这边出问题了,也有可能服务器端出问题了,甚至也有可能中间的传输过程出了问题。
所以需要对接口的异常进行捕获和处理以给用户更加有效的反馈,但如果项目中接口比较多的话,那我们就应该考虑如何去实现异常的统一处理了。
如何做
以依赖
jQuery
项目举例,通常是用$.ajax()
方法去请求接口数据。我们知道可以通过ajax的返回值再调用
jqXHR.fail(function( jqXHR, textStatus, errorThrown ) {});
来处理请求的异常(超时、中止、解析错误等),如下所示:可能在某个接口处理异常时是直接弹窗提示,有的接口可能需要在页面上打印出错信息,如何统一这种需求呢?
编写一个共用函数:
在实际接口中调用:
The text was updated successfully, but these errors were encountered: