小程序Page里的函数,在app.js中的接口返回数据前执行,因为缺少重要数据报错的解决办法

app.js

// app.js
let util = require('./utils/util.js');
App({
  onLaunch: function (options) {
    this.globalData = {
      apiurl: 'http://',
      userInfo: []//用户信息
    }
  },
  onShow() {
    this.getUserInfo();
  },

  getUserInfo(callback) {
    let th = this;
    if (!util.isNull(th.globalData.userInfo) && !util.isNull(th.globalData.session_key)) {
      if(typeof callback == 'function')
        callback();
    } else {
      if (!th.globalData.userinfo_callbackList) {
        th.globalData.userinfo_callbackList = [];
      }
      th.globalData.userinfo_callbackList.push(callback);
      if (th.globalData.userinfo_apilock) {
        return;
      }
      th.globalData.userinfo_apilock = true;
      //注册/登录
      wx.login({
        success: res1 => {
          wx.request({
            url: th.globalData.apiurl + 'getbind',
            data: {
              code: res1.code
            },
            success: res => {
              //设置为全局数据
              th.globalData.userInfo = res.data.memberInfo;
              th.globalData.session_key = res.data.session_key;
              if(!util.isNull(th.globalData.userinfo_callbackList)){
                //处理队列中的回调
                for (let i = 0; i < th.globalData.userinfo_callbackList.length; i++) {
                  if(typeof th.globalData.userinfo_callbackList[i] == 'function')
                    th.globalData.userinfo_callbackList[i]();
                }
              }

             th.globalData.config_callbackList = [];//清空回调列表


              th.globalData.userinfo_apilock = false;
            }
          })
        }
      })
    }
  }


})

index.js

// index.js
const app = getApp()
Page({
  data: {
  },
  onLoad: function (options) {
    let th = this;//获取用户数据(登录|注册)
    app.getUserInfo(function(){
      th.setData({
        userInfo:app.globalData.userInfo,
        session_key:app.globalData.session_key
      })
    });
  }
})

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值