项目首页先异步获取全局sessionId,再进行其他异步操作

在项目中,一般会通过接口来确认用户,返回用户sessionId,后面全部接口都需提交sessionId,

在vue和小程序中,一般会在全局js(main.js / app.js)中异步获取,但是在未获取到时,index页面可能已经加载并进行了其他异步操作。

解决方法:

方法一:在index页前加一个启动页,获取成功后,然后再跳转首页;

方法二:使用promise,判断进程状态,在index中去判断进程状态,再去执行页面的加载。

例:小程序中:

app.js

//app.js
App({
  onLaunch: function () {

    var _this = this;
    wx.showLoading({
      mask: true
    })
    _this.getSessionId();
  },
    // 获取sessionId
  getSessionId() {
    var _this = this;
    return new Promise(function (resolve, reject) {
        wx.request({
          url: _this.globalData.defaultHost + '/api/exam/sessionId',
          header: {
            'content-type': 'application/json' // 默认值
          },
          success(res) {
            console.log(res.data);
            if (res.data.q.d == "操作成功") {
              _this.globalData.sessionId = res.data.q.s;
              resolve(_this.globalData.sessionId);
            } else {
              wx.showToast({
                title: res.data.q.d,
                icon: 'none'
              })
            }
          },
          fail(error) {
            console.log(error);
            wx.showToast({
              title: '小主您的网络错误,请重新进入~',
              icon: 'none',
            })
          },
          complete() {
            wx.hideLoading();
          }
        })
    })
  },
  globalData: {
    userInfo: null,
    defaultHost:'http://web.zhbx',
    sessionId:''
  }
})

index.js:

Page({
  /**
   * 页面的初始数据
   */
  data: {
    "packageList":[]
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    getApp().getSessionId().then(function(value) {
      console.log(value);
      // wx.request({
      //   url: 
      // })
    })
  },
})

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值