微信小程序、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=>{});//第二层调用
发布了17 篇原创文章 · 获赞 0 · 访问量 377

猜你喜欢

转载自blog.csdn.net/huige232508/article/details/104773685