微信小程序request异步赋值问题

我把登陆/获取用户信息写再了app.js里,再success之后将内容赋值到globalData.xxxxx,Page的onLoad中再把globalData.xxxxx赋值到data.xxxxx发现赋值不上 差了很多资料说是onLoad,onLaunch,request异步请求的问题导致 请问如何解决。

app.js

app({

globalData: {
    xxxxx: null
  },

onLaunch: function () {
    var that = this;
    wx.login({
      success: function (res) {
        var code = res.code;
        if (code) {
          wx.getUserInfo({
            success: function (res) {
              wx.request({
                .....
                },
                success: function (data) {
                  that.globalData.xxxxx = data.data.xxxxx
                },
                fail: function () {
                  console.log('系统错误')
                }
              })
            },
            fail: function () {
              console.log('获取用户信息失败,请重新授权')
            }
          })
        } else {
          console.log('获取用户登陆状态失败' + res.errMsg)
        }
      },
      fail: function () {
        console.log('登陆失败')
      }
    })
  }

})

index.js

var app = getApp();

Page({
    data: {
        xxxxx:null
      },
      
    onLoad: function (options) {
        this.setData({
          xxxxx: app.globalData.xxxxx
        });
    }

})
阅读 7.3k
1 个回答

使用Promise进行对APP.js内的进行login的方法进行一次封装后,在index.js内调用app内封装的那个方法后拿到所需值然后对全局的那个globalData进行赋值,如果还有不明白的 明天到公司 我给你上代码。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题