微信小程序、uni-app 异步API Promise封装
我们以一个uni-app中很常见的api接口格式为例,如下图:
uni.getImageInfo(OBJECT)
正常情况下的调用:
下面我们来把这种异步格式 用Promise改写,使其能变成Promise.then的结构。
下面用Promise来封装一个通用的、能转换小程序 uni-app中类似格式的api 的方法:
- 思路:三层封装 第1层接收需要转换格式的方法、第2层接收该方法参数、第3层返回Promise对象
var promisiy = api => { // 第1层接收需要转换格式的方法
return (options,...params) => {//第2层接收该方法参数 options 是api的参数 ; params是自定义的其他参数
return new Promise((resolve,reject) => { //第3层返回Promise对象
const extras = {
success:resolve,
fail:reject
}
api({...options,...extras},...params)
})
}
}
调用封装好的方法
var getImageInfoNew = promisiy(uni.getImageInfo);//第一层调用
getImageInfoNew({src:''}).then(res=>{}).catch(err=>{});//第二层调用