微信小程序登录逻辑(onLaunch和onLoad执行顺序)

问题:小程序的login()登录请求一般在app.js的onLaunch里面发起,如果在其他页面onLoad里调用登录请求返回的数据,会取不到数据。因为请求是异步的,在onLoad里,login()整个请求没有处理结束...

解决方案:

//app.js
App({
  onLaunch: function () {
    wx.login({
      success: function (res) {
        if (res.code) {
          console.log(res)
          wx.request({
            url: 'helloWorld.php', //仅为示例,并非真实的接口地址
            data: {},
            success: function (res) {
              this.globalData.loginId = res.loginId;
              //由于这里是网络请求,可能会在 Page.onLoad 之后才返回
              // 所以此处加入 callback 以防止这种情况
              if (this.loginIdCallback) {
                this.loginIdCallback(loginId);
              }
            }
          })
        } else {
          console.log('获取code失败!')
        }
      },

    })

  },

  //定义回调函数
  loginIdCallback() {

  },

  globalData: {
    loginId: ''
  }
})



//index.js
//获取应用实例
const app = getApp()

Page({

  init() {

  },

  onLoad: function () {
    //判断是用户是否绑定了
    if (app.globalData.loginId && app.globalData.loginId != '') {
      this.init()
    } else {
      app.loginIdCallback = loginId => {
        this.init()
      }
    }
  }
  
})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值