uni-app中 控制onLaunch和onLoad的异步请求先后顺序

小程序一般都需要在app.vue的onLaunch做一个异步请求获取用户的openId和token之后才能执行页面的onLoad里的异步请求,像平常用async await控制异步请求的先后顺序,

在小程序里也一样,只不是需要做成全局的。

如 :在main.js里挂载

Vue.prototype.$getToken = new Promise(resolve => {
  Vue.prototype.$isResolve = resolve;
})

然后在app.vue中

  onLaunch: function () {
     let that=this;
     wx.login({
      success(res) {
        if (res.code) {
          // 发起网络请求 获取openId
          that.$http({
            url: "/wouu/applets/getToken",
            method: "post",
            data: {
              code: res.code,
            },
          }).then((res) => {
            console.log("999", res);
            //调用
            that.$isResolve();

          });
        } else {
          console.log("登录失败!" + res.errMsg);
        }
      },
    });
  },

在页面的onLoad()处

async onLoad() {
     // 等待登录结果返回
    await this.$getToken;
    this.$http({
      url:'/wdse/applets/qddSceewData',
      method:'post',
      data:{
        scene:'rdsmend',//场景值推荐
      }
    }).then(res=>{
      console.log('dssa',res)
    })
   
  },

 

posted @ 2021-11-08 15:54  暴躁女青年  阅读(1239)  评论(0编辑  收藏  举报