微信小程序app.js的onLaunch执行完之后再执行Page的onLoad & 小程序onLaunch和onLoad执行顺序

需求

在微信小程序分享页面时,打开页面按理应该是先走完app.jsonLaunch onShow执行分享页面onLoadonShow;但现因为app.jsonLaunch异步操作,在等待返回值的时候Page里的onLoad事件就已经执行了。

想要的结果

App\] onLaunch -\> \[Page\] onLoad -\> \[App\] onLaunch sucess callback-\> \[Page\] onLoad

具体实现案例

1、app.js

js 复制代码
//app.js
 App({
  onLaunch () {
   wx.request({
    url: '接口', //仅为示例,并非真实的接口地址
    data: {
    },
    success(res)=> {
    this.globalData.haveLoginFlag= res.data.haveLoginFlag;
     // 所以此处加入 callback 以防止这种情况
     if (this.checkLoginReadyCallback){
      this.checkLoginReadyCallback({haveLoginFlag:res.data.haveLoginFlag});
     }
    }
   })
  },
  globalData: {
   haveLoginFlag: false
  }
 })

2、分享页面的page

js 复制代码
const app = getApp()
  onLoad() {
  //判断app.js onLaunch是否执行完毕
    if (app.globalData.haveLoginFlag) {
      const { spuId, selectedAddr } = this.data;
      const newAddr = wx.getStorageSync('addressMsg');
      if (selectedAddr.addressId != newAddr?.addressId) {
        this.getDetail(spuId);
      }
    } else {
      app.checkLoginReadyCallback = res => {
      if(res.haveLoginFlag){
        const { spuId, selectedAddr } = this.data;
        const newAddr = wx.getStorageSync('addressMsg');
        if (selectedAddr.addressId != newAddr?.addressId) {
          this.getDetail(spuId);
         }
        }
      }
    }
  }

相关文章

基于ElementUi再次封装基础组件文档


基于ant-design-vue再次封装基础组件文档


vue3+ts基于Element-plus再次封装基础组件文档

相关推荐
小光学长8 小时前
基于微信小程序的背单词系统x1o5sz72(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·微信小程序·小程序
韩立学长12 小时前
【开题答辩实录分享】以《足球社区微信小程序》为例进行答辩实录分享
微信小程序·小程序
鹧鸪云光伏与储能软件开发20 小时前
光伏开发小程序:快速获客,成交项目更迅速
大数据·微信小程序·小程序·光伏
sen_shan2 天前
《微信小程序》第五章:登录-API封装
微信小程序·小程序
simon_93492 天前
微信小程序(H5)上传文件到阿里云 OSS(使用 STS 临时凭证)
阿里云·微信小程序·小程序·html5
TiAmo zhang2 天前
微信小程序开发案例 | 通讯录小程序(上)
微信小程序·小程序·notepad++
AI大法师2 天前
证件照如何制作?方法来了:一寸、二寸标准证件照、旅游签证、职业资格考试都可
微信小程序
sen_shan3 天前
《微信小程序》第八章:“我的“设计
微信小程序·小程序
咸虾米3 天前
在unicloud的云对象中如何调用同一服务空间内的另外其他云对象
javascript·微信小程序·前端框架
sen_shan3 天前
《微信小程序》第七章:TabBar设计
微信小程序·小程序