經過Proxy代理uni相關方法,包裝爲Promise後返回javascript
代碼以下:java
/** * 版本: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方法!async
// 以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=880this