level 7
我是😈乖宝宝
楼主
关于微信小程序在app.js修改后的全局变量值在其他页面异步获取的问题
方法1:
微信默认模板里面有提供方法 回调函数返回数据结果
其他页面获取的时候先从全局变量获取,获取不到从函数里面获取。
方法2:利用ES6的promise
虽然app.js先于index.js。但是修改app.js中的全局变量是异步请求,如果你想在index.js里获取app.js修改后的值,那么需要使用promise来实现异步。
app.js
//app.js App({ globalData: { userInfo: null }, // 检测授权 getauthor: function () { return new Promise((resolve, reject) => { wx.getSetting({ success: (res) => { if (res.authSetting["scope.userInfo"]) { console.log("已授权"); wx.getUserInfo({ success:(res)=> { //箭头函数为了处理this的指向问题 this.globalData.userInfo = res.userInfo; resolve(this.globalData.userInfo); // 这里是关键 } }) } else { reject(this.globalData.userInfo) wx.redirectTo({ url: '/pages/author/author' }) console.log("未授权"); wx.removeStorage({ key: 'unionid' }) } } }) }) } })
index.js(或者about.js)
// 获取用户信息 app.getauthor().then(res => { console.log(res); })
因为要首先加载index页面,所以需要使用异步请求,在其他页面的话,可以直接使用app.globalData.userInfo.userInfo
2020年06月01日 13点06分
1
方法1:
微信默认模板里面有提供方法 回调函数返回数据结果
其他页面获取的时候先从全局变量获取,获取不到从函数里面获取。
方法2:利用ES6的promise
虽然app.js先于index.js。但是修改app.js中的全局变量是异步请求,如果你想在index.js里获取app.js修改后的值,那么需要使用promise来实现异步。
app.js
//app.js App({ globalData: { userInfo: null }, // 检测授权 getauthor: function () { return new Promise((resolve, reject) => { wx.getSetting({ success: (res) => { if (res.authSetting["scope.userInfo"]) { console.log("已授权"); wx.getUserInfo({ success:(res)=> { //箭头函数为了处理this的指向问题 this.globalData.userInfo = res.userInfo; resolve(this.globalData.userInfo); // 这里是关键 } }) } else { reject(this.globalData.userInfo) wx.redirectTo({ url: '/pages/author/author' }) console.log("未授权"); wx.removeStorage({ key: 'unionid' }) } } }) }) } })
index.js(或者about.js)
// 获取用户信息 app.getauthor().then(res => { console.log(res); })
因为要首先加载index页面,所以需要使用异步请求,在其他页面的话,可以直接使用app.globalData.userInfo.userInfo