前言
在开发项目的时候遇到从全局获取用户信息,逻辑是从app.js中的onLauch获取,page页面的onLoad拿到数据填充到页面。遇到的问题是onLauch与onLoad是异步的,没办法从页面判断app.js中获取数据的先后,于是参照网上的方式用回调进行处理。
代码
app.js
App({
globalData: {
//需要获取的数据
userInfo: null,
//回调函数
cb: null
},
onLauch: function(){
//异步获取用户数据
wx.request({
url: '/api/getUserInfo',
success: res => {
this.globalData.userInfo = res.data.userInfo;
cb && cb(res.data.userInfo);
}
})
}
})index.js
const app = getApp(); Page({
data: {},
onLoad: function(){
if(app.globalData.userInfo){
this.setData({
userInfo: app.globalData.userInfo
})
} else {
app.globalData.cb = (userInfo) => {
this.setData({
userInfo
})
}
}
}
})