前言
大家都知道为什么要使用,直接上干货
找到公共的util.js文件
const toAsync = function (names) {
return (names || [])
.map(name => ({
name,
member: wx[name]
}))
.filter(t => typeof t.member === "function")
.reduce((r, t) => {
r[t.name] = promisify(wx[t.name]);
return r;
}, {});
}
const promisify = function (fn) {
// promisify() 返回的是一个函数, 箭头函数
// 这个函数跟传入的 fn(即 wx.abcd) 签名相同(或兼容)
return async function (args) {
// ^^^^ 接受一个单一参数对象
return new Promise((resolve, reject) => {
// ^^^^^^^^^^^ 返回一个 Promise 对象
fn({
// ^^ ^ 调用原函数并使用改造过的新的参数对象
...(args || {}),
// ^^^^^^^^ 这个新参数对象得有原本传入的参数,
// ^^ 当然得兼容没有传入参数的情况
success: res => resolve(res),
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 注入 success 回调,resovle 它
fail: err => reject(err)
// ^^^^^^^^^^^^^^^^^^^^^^^^ 注入 fail 回调,reject 它
});
});
};
}
module.exports = {
toAsync,
}
找到要使用的js文件,先引用util.js
const util = require('../../utils/util.js')
const awx = util.toAsync(['getStorage'])
onLoad: async function(options){
let userInfoDic = null
try {
userInfoDic = await awx.getStorage({
key: 'wxUserInfo',
})
} catch (e) {
}
if (userInfoDic && userInfoDic.data) {} else {
this.setData({
isShowAuth: false
})
}
},
这那的是用户授权的个人信息,通过这种方式来判断是否需要授权,在index.js使用
其他的使用,比如你封装了一个request的请求,就可以下面方式使用
async getCommDataList() {
// console.log('this.data.userId',this.data.userId)
let urlR = "/XXX"
let body = {
pageNo: 1,
pageSize: 5,
}
let dataListRes = await util.sendRequest(urlR, 'GET', body)
if (dataListRes.data.result === 0) {
// 成功处理你的逻辑
// console.log(dataList)
} else {
wx.showToast({
title: dataListRes.data.message,
icon: 'none',
duration: 3000
})
}
},
如果报错
需要在设置中勾选增强编译