微信小程序、uni-app 異步API Promise封裝

微信小程序、uni-app 異步API Promise封裝

我們以一個uni-app中很常見的api接口格式爲例,如下圖:

uni.getImageInfo(OBJECT)
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-eoRdH50D-1583821031538)(en-resource://database/4568:1)]

正常情況下的調用:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-y5q3dqcC-1583821031539)(en-resource://database/4570:1)]
下面我們來把這種異步格式 用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=>{});//第二層調用
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章