在使用async await进一步优化了异步事件时,它也留给了我们一些需要处理的问题-错误处理
大多数同学好像都是在async函数中使用try catch的方式来处理
然后我在想可不可以让这种错误错误更容易一点,通过返回值来判断请求成功/失败
// api.js
export const getRecordList = (params) => fetch(URL, params, 'POST')
// 假设后台的返回值res格式为 { code: 200, data: { list: [...], total: 999}, msg: '请求成功'}
// 请求成功,可以在这里加上请求成功的提示信息,保证return一个true
.then(res => res.data || {})
// 请求错误的提示信息,保证return false
.catch((err) => alert(err));
// RecordList.js
...
async getRecordList() {
const { isLoading, searchParams } = this.data;
if (isLoading) return;
// -- 请求开始 --
this.data.isLoading = true;
const res = await API.getRecordList(searchParams);
// 这里通过res的返回值来判断请求是否成功
if (res) {
// 成功的业务逻辑,刷新record列表数据及分页数据
const { list, total } = res;
this.data.list = list;
this.data.totalPage = Math.ceil(total / PAGE_SIZE) || 1;
} else {
// 失败的业务逻辑...
}
this.data.isLoading = false;
// -- 请求结束 --
},
...
我觉得上面这种方式也可以代替try catch方法,而且更清晰。 不知道可行否。。。 求大佬们指点