const authorization = function authorization(app) {
let _this = this
//需要用户同意授权获取自身相关信息
return new Promise(() => {
wx.getSetting({
success: function(res) {
if (res.authSetting['scope.userInfo']) {
//将授权结果写入app.js全局变量
app.globalData.hasLogin = true
//从云端获取用户资料
wx.cloud.callFunction({
name: 'get_userinfo',
data: {
getSelf: true
},
success: res => {
if (res.errMsg == "cloud.callFunction:ok" && res.result) {
//如果成功获取到
//将获取到的用户资料写入app.js全局变量
app.globalData.userInfo = res.result.data.userData
app.globalData.userId = res.result.data._id
// wx.switchTab({
// url: '/pages/home/home'
// })
} else {
console.log("未注册")
}
},
fail: err => {
wx.showToast({
title: '请检查网络状态',
duration: 800,
icon: 'none'
})
console.error("get_setUserInfo调用失败", err.errMsg)
}
})
} else {
console.log("未授权")
}
},
fail(err) {
wx.showToast({
title: '请检查网络您的状态',
duration: 800,
icon: 'none'
})
console.error("wx.getSetting调用失败", err.errMsg)
}
})
})
}
const promisic = function (n) { return function (t = {}) { return new Promise((c, r) => { const s = Object.assign(t, { success: n => { c(n) }, fail: n => { r(n) } }); n(s) }) } },
这个方法可以把小程序的方法转换promise 例如
promisic(wx.getStorage)().then(res=>{ console.log(res) }).catch(err=>{ console.err(err) })
或者
async getStorage() { const res = await promisic(wx.getStorage)() console.log(res) }
https://developers.weixin.qq.com/community/develop/article/doc/00028cbc2e04e0ddf549d535351c13
const authorization = function authorization(app) { let _this = this //需要用户同意授权获取自身相关信息 return new Promise(() => { wx.getSetting({ success: function(res) { if (res.authSetting['scope.userInfo']) { //将授权结果写入app.js全局变量 app.globalData.hasLogin = true //从云端获取用户资料 wx.cloud.callFunction({ name: 'get_userinfo', data: { getSelf: true }, success: res => { if (res.errMsg == "cloud.callFunction:ok" && res.result) { //如果成功获取到 //将获取到的用户资料写入app.js全局变量 app.globalData.userInfo = res.result.data.userData app.globalData.userId = res.result.data._id // wx.switchTab({ // url: '/pages/home/home' // }) } else { console.log("未注册") } }, fail: err => { wx.showToast({ title: '请检查网络状态', duration: 800 icon: 'none' }) console.error("get_setUserInfo调用失败", err.errMsg) } }) } else { console.log("未授权") } }, fail(err) { wx.showToast({ title: '请检查网络您的状态', duration: 800, icon: 'none' }) console.error("wx.getSetting调用失败", err.errMsg) } }) }) }