微信小程序、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=>{});//第二層調用