async/await 优雅的错误处理方法

403 阅读1分钟

当我们处理 async/await 的时候是不是不好做 throw err 抛错处理?

记得看过一篇文章,将其最佳处理方案摘抄了下来方便使用

// 需要处理的async 方法
(async () => {
const fetchData = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('fetch data is me')
}, 1000)
})
}



// 抽离成公共方法用来处理async
const awaitWrap = (promise) => {
return promise
.then(data => [null, data])
.catch(err => [err, null])
}

//使用
const [err, data] = await awaitWrap(fetchData())
console.log('err', err)
console.log('data', data)
// err null
// data fetch data is me
})()