uniapp-异步化uni方法支持awaitasync适用所有方法

138次阅读

共计 666 个字符,预计需要花费 2 分钟才能阅读完成。

思路如下:

通过 Proxy 代理 uni 相关方法,包装为 Promise 后返回

代码如下:

/**
 * 版本:1.0.0
 * @author i@tech.top
 * 有问题和疑问可以发邮件联系~
 */

// 使用 proxy 转换为异步化的 uni 方法
const uniAsync = new Proxy({}, {get(target, name) {return (obj) => new Promise((resolve, reject) => {uni[name]({
                ...obj,
                success: ret => {resolve(ret)
                },
                fail: err => {reject(err)
                }
            })
        })
    }
})

export default uniAsync

使用说明:

在 main.js 中引用

// uni 异步化
import uniAsync from '@/js_sdk/i-uni-async/uni-async.js'
// 设置到 prototype
Vue.prototype.$uniAsync = uniAsync

使用方法,在页面或者组件中调用,支持所有 uni 方法!

// 以 getImageInfo 为例
export default {data() {return {}
    },
    methods: {async test() {
            const image = await this.$uniAsync.getImageInfo({src:‘http://xxx.com/images/xxx.png’})
            console.log(image.path)
        }
    }
}

最后附上插件地址:https://ext.dcloud.net.cn/plugin?id=880

正文完
 0