关于Promise实例中代码的复用
最常见的Promise实例应该就是axios接口了,比如我定义了如下接口:
function getBooks(params) {
return axios.get('http://localhost:8000/api/books', params)
}
复制代码
这是一个常见的获取后台数据的接口,使用方式如下
let books
getBooks().then(res => {
if (res.status == 200) {
books = res.data // 接收业务数据
} else {
console.log('请求失败')
}
}).catch(err => { // 捕捉错误
console.log(err)
})
})
复制代码
其中可以复用的点如下
- 状态码的判断处理
- 接口的异常处理
为了统一处理Promise实例, , 我们需要在原本的Promise实例上包一个Promise 实例, 处理如下:
function newGetBooks(params) {
return new Promise((resolve, reject) => {
axios.get('http://localhost:8000/api/books', params).then(res => {
if (res.status == 200) { // 状态码判断
resolve(res.data)
} else {
console.log('请求失败')
resolve([]) // 请求失败时返回空数组
}
}).catch(err => { // 异常处理
console.log('请求失败')
resolve([]) // 异常时返回空数组
})
})
}
复制代码
封装后的接口使用方式如下:
let books
newGetBooks().then(res => {
books = res
})
复制代码
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END