收藏
回答

index.js页面获取不到app.js中globalData修改后的值?

通过openId,来获取用户信息,复制给 globalData.userInfo,但是再index.js中打印【app.globalData.userInfo】,却为空,大佬们这该怎么解决呀?

代码如下,求教,万谢

app.js

onLaunch() {
    this.login()
  },
globalData: {
    userInfo: null
  },
//登录:获取code
  login(){
    const that = this
    if(wx.getStorageSync('oid')){
      return
    }
    wx.login({
      success (res) {
        if (res.code) {
          that.getOpenId(res.code)
        } else {
          console.log('登录失败!' + res.errMsg)
        }
      }
    })
  },
//获取openid
  getOpenId(code){
    request.GET('/mgzapi/wechat/get123/'+code).then(res=>{
      if(res.data.code==200){
        this.getUserInfo(res.data.openid)
      }else{
        wx.showToast({ title: '获取数据有误,请重试', icon: 'none', duration: 2000})
      }
    })
  },
//获取用户信息
getOneUser(oid){
    request.GET('/mgzapi/user/info/'+id).then(res=>{
      if(res.data.code==200){
        var info = res.data.data[0]
                //用户保存到全局globalData中
        this.globalData.userInfo = info
      }
    })
  },



index.js

const app = getApp()
Page({
  data: {
    userInfo :''
  },
  onLoad() {
       console.log(app.globalData.userInfo)
  },
)}


回答关注问题邀请回答
收藏

5 个回答

  • 小胖
    小胖
    06-25

    function requestData() {  

    return new Promise((resolve, reject) => {  

        wx.request({   });  

      });  

    async function aabb() {  

      try {  

        const data = await requestData();  

      } catch (e) {  

        console.log('请求失败:', e);  

      }  

    onlaunch:(e)=>{ this.aabb() }

    或者 你直接把请求写在index.js的onload里面把


    06-25
    有用 1
    回复
  • 0
    0
    06-25

    Promise

    06-25
    有用
    回复
  • 一笑皆春
    一笑皆春
    06-25

    请求是需要时间的,请求没结束就console了肯定是空的,你加个setTimeout再去打印就不是空了

    06-25
    有用
    回复
  • 那一抹笑😃 穿透阳光
    那一抹笑😃 穿透阳光
    06-25

    异步改成同步

    06-25
    有用
    回复
  • Mr.Zhao
    Mr.Zhao
    发表于小程序端
    06-25

    做过前端不懂js异步?

    06-25
    有用
    回复 1
    • T.K.
      T.K.
      发表于移动端
      06-25
      现在做产品了,代码好几年都没写了~😓
      06-25
      回复
登录 后发表内容