async await 优雅处理异步错误

对于异步的接口请求处理,有四种处理方式javascript

1 promise处理,执行方法回调多

promise
    .then(res => {
        data = res.body
    })
    .catch(err => {
        // todo
    })
复制代码

2 普通 async await,try catch 闹心

let res
try {
    res = await promise()
} catch (ex) {
    // todo
}
data = res.body
复制代码

3 将错误转成code码, code 取值纠结

这一层再拦截器上作封装,假设接口报错,事先配置一个固定的code码。code 码再定制上,会存在一些歧义,尤为是新来的同事,不是太好理解。java

4 async await 优雅处理

const awaitWrap = (promise) => {
	return  promise
	.then(res => [null, res])
	.catch(err => [err, null])
}

const [res, data] = awaitWrap(sendRequest())
if (err) {
	// todo
}
const data = res.body
复制代码

awaitWrap 这一步能够封装到脚手架层。这样子会简洁很多。promise

相关文章
相关标签/搜索