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

相關文章
相關標籤/搜索