日常开发中无论是通过ajax通信、还是调用一些第三方的API,都会有很多的错误编码,笔者以前的写法一直都是每一个请求结果之后都去根据code码做出各种提示之类的操作,例如:
if(code === 1){
console.log("code等于1啦")
}else if(code === 2){
console.log("code等于2啦")
}
很多的后端同学体恤前端将错误提示放到后端去做,将成功请求的code设置为0,所以前端有时可能只需要判断一下code是否为0,否则就alert后台返给的msg即可,这样做代码效果而言是没任何问题的,不过很是会有很多时候有一些单独的code编码是有特殊意义的,或者调用第三方工具时,个人的建议是将所有常量全部提取出来,所谓的常量包括你switch case中的各个value,if else中的各个判断条件中具体的数值或者字符串等,例如上面的例子中,code等于1,这个1和2就可以提取出来,否则时间长了之后,你真的不知道这个1和2代表的是什么。
下面是笔者调用scatter API对一些常见的错误code写的处理文件:
//状态管理对象
import {store} from '../index'
// 通用提示框
import Toast from '../container/toast'
/**
* 402 用戶拒絕了簽名請求!
* 500 区块链网络操作失败!
* 3050003 餘額不足!
* 3080004 CPU不足
*/
const errorCode = {
402 : "scatter_RefuseToProvide",
500 : "scatter_operationFailed",
3050003 : "scatter_runningLow",
3080004 : "scatter_alertCPU",
}
/**
*
* @param {number} code 错误码
*/
export const errorCodeFn = (code) => {
const Intl = store.getState().lang.get;
Toast.warning(Intl(errorCode[code]));
}
之后在不等于正确code时,我们只需要调用这个errorCodeFn方法,将错误的code传递进来,之后进行字典查询将错误信息提示出来即可。
以上代码只是例子,并不可以直接使用,好的数据管理规范对日后维护代码及新增功能会更加方便,多想想数据管理在去操刀子写代码,一个项目你用一天的时间构思项目数据,四天的时间去写代码和你用两天的时间去构思项目数据,三天的时间写代码,所做出来的工作量基本上会是一样多的,而且后者会更好一些,前提是你要能想明白,哈哈哈哈。