通过openId,来获取用户信息,复制给 globalData.userInfo,但是再index.js中打印【app.globalData.userInfo】,却为空,大佬们这该怎么解决呀?
代码如下,求教,万谢
app.js
onLaunch() {
this.login()
},
globalData: {
userInfo: null
},
//登录:获取code
login(){
const that = this
if(wx.getStorageSync('oid')){
return
}
wx.login({
success (res) {
if (res.code) {
that.getOpenId(res.code)
} else {
console.log('登录失败!' + res.errMsg)
}
}
})
},
//获取openid
getOpenId(code){
request.GET('/mgzapi/wechat/get123/'+code).then(res=>{
if(res.data.code==200){
this.getUserInfo(res.data.openid)
}else{
wx.showToast({ title: '获取数据有误,请重试', icon: 'none', duration: 2000})
}
})
},
//获取用户信息
getOneUser(oid){
request.GET('/mgzapi/user/info/'+id).then(res=>{
if(res.data.code==200){
var info = res.data.data[0]
//用户保存到全局globalData中
this.globalData.userInfo = info
}
})
},
index.js
const app = getApp()
Page({
data: {
userInfo :''
},
onLoad() {
console.log(app.globalData.userInfo)
},
)}
function requestData() {
return new Promise((resolve, reject) => {
wx.request({ });
});
}
async function aabb() {
try {
const data = await requestData();
} catch (e) {
console.log('请求失败:', e);
}
}
onlaunch:(e)=>{ this.aabb() }
或者 你直接把请求写在index.js的onload里面把
Promise
请求是需要时间的,请求没结束就console了肯定是空的,你加个setTimeout再去打印就不是空了
异步改成同步
做过前端不懂js异步?