关于微信小程序在app.js修改后的全局变量值在其他页面异步获取的问题

mac2025-04-16  2

前言

虽然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({ lang: 'zh_CN', 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

// 获取用户信息 app.getauthor().then(res => { console.log(res); })

因为要首先加载index页面,所以需要使用异步请求,在其他页面的话,可以直接使用app.globalData.userInfo.userInfo,

最新回复(0)