响应码报错的优化写法

在接口调用时,根据不同的响应码返回给用户相应的提示;通常用简单的if else 就能实现;
如下:

this.orderService.getOrder(id)
  .subscribe((res) => {
    if (res.code == '00000') {
      <!-- 响应正确的业务代码 -->
    }else if (res.code == '00001') {
        alert("报错原因A")
    }else if (res.code == '00002') {
        alert("报错原因B")
    }else if (res.code == '00003') {
        alert("报错原因C")
    }else if (res.code == '00004') {
        alert("报错原因D")
    }else if (res.code == '00005') {
        alert("报错原因E")
    }else if (res.code == '00006') {
        alert("报错原因F")
    }else {
        alert("统一通用报错")
    }
  }, (error) => {
    console.error('请求异常');
  });
}

这是一个很常见也很简单的写法,但是当响应码的情况越来越多时会出现代码冗余的缺点;
当然这里可以用switch来改写,但是还是不够简洁;
所以推荐以下写法,核心思想是利用Object类型的hasOwnProperty()方法。

const error_code = {
    '00001': '报错原因A',
    '00002': '报错原因B',
    '00003': '报错原因C',
    '00004': '报错原因D',
    '00005': '报错原因E',
    '00006': '报错原因F'
}

this.orderService.getOrder(id)
  .subscribe((res) => {
    if (res.code == '00000') {
      <!-- 响应正确的业务代码 -->
    }else if (this.error_code.hasOwnProperty(res.code)) {
        alert(this.error_code[res.code])
    }else {
        alert("统一通用报错")
    }
  }, (error) => {
    console.error('请求异常');
  });
}

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!