当前位置: 代码迷 >> 综合 >> 微信小程序在app.js修改后的全局变量值在其他页面异步获取的问题
  详细解决方案

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

热度:64   发布时间:2024-01-30 12:37:26.0

虽然app.js先于index.js。但是修改app.js中的全局变量是异步请求,如果你想在index.js里获取app.js修改后的值,那么需要使用promise来实现异步。

 

小程序默认项目自带了一种获取授权头像的信息了

 

promise实现异步操作同步显示流程

app.js

//app.js
App({//获取授权的头像信息  检测授权getUserInfo() {return new Promise((resolve, reject) => {// 获取用户信息wx.getSetting({success: res => {if (res.authSetting['scope.userInfo']) {wx.getUserInfo({success: res => {// 可以将 res 发送给后台解码出 unionIdthis.globalData.userInfo = res.userInforesolve(this.globalData.userInfo); // 这里是关键}})}else{//之前没有授权信息头像reject(this.globalData.userInfo)wx.redirectTo({url: '/pages/about/about'})console.log("未授权");}}})})},globalData: {userInfo: null}
})

index.html

<!--index.wxml-->
<view class="container"><view class="userinfo"><button wx:if="{{!hasUserInfo}}" open-type="getUserInfo" bindgetuserinfo="getUserInfo"> 获取头像昵称 </button><block wx:else><image  class="userinfo-avatar" src="{{userInfo.avatarUrl}}" mode="cover"></image><text class="userinfo-nickname">{{userInfo.nickName}}</text></block></view>
</view>

index.js

//index.js
//获取应用实例
const app = getApp()
Page({data: {userInfo: {},hasUserInfo: false,},onLoad: function () {//检测授权信息app.getUserInfo().then(res=>{console.log(res);this.setData({hasUserInfo:true,userInfo:res})})},getUserInfo: function(e) {console.log(e)app.globalData.userInfo = e.detail.userInfothis.setData({userInfo: e.detail.userInfo,hasUserInfo: true})}
})

 

  相关解决方案