Promise实例中代码的复用

关于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)
	})
})
复制代码

其中可以复用的点如下

  1. 状态码的判断处理
  2. 接口的异常处理

为了统一处理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
喜欢就支持一下吧
点赞0 分享