微信小程序app.js onLaunch异步,首页onLoad先执行

2023-11-13

本来按照事件顺序,小程序初始化时触发App里的onLaunch,后面再执行页面Page里的onLoad,但是在onLaunch里请求授权信息本就为异步执行,等待返回值的时候Page里的onLoad事件就已经执行了。

app.js 代码 

//app.js
App({
  onLaunch: function () {
    console.log('onLaunch');
    wx.request({
      url: 'test.php', //仅为示例,并非真实的接口地址
      data: {
      },
      success: function(res) {
        console.log('onLaunch-request-success');
        // 将employId赋值给全局变量,提供给页面做判断
        this.globalData.employId = res.employId;  
      }
    })
  },
  globalData: {
    employId: ''
  }
})

首页index.js 代码 

 

//index.js
//获取应用实例
const app = getApp()
Page({
  data: {
    albumDisabled: true,
    bindDisabled: false
  },
  onLoad: function () {
    console.log('onLoad');
    console.log('onLoad app.globalData.employId = ' + app.globalData.employId);
    //判断是用户是否绑定了
    if (app.globalData.employId && app.globalData.employId != '') {
      this.setData({
        albumDisabled: false,
        bindDisabled: true
      });
  }
})

控制台打印的结: 

onLaunch
onLoad
onLoad app.globalData.employId =
onLaunch-request-success

若是能等完onLaunch请求完再执行Page的onLoad方法那自然是满足了我们的需求。
这里采用的方法是定义一个回调函数。
Page页面判断一下当前app.globalData.employId是否有值,如果没有(第一次)则定义定义一个app方法(回调函数)app.employIdCallback = employId => {…}。
App页面在请求success后判断时候有Page页面定义的回调方法,如果有就执行该方法。因为回调函数是在Page里面定义的所以方法作用域this是指向Page页面。 

//app.js
App({
  onLaunch: function () {
    wx.request({
      url: 'test.php', //仅为示例,并非真实的接口地址
      data: {
      },
      success: function(res) {
        this.globalData.employId = res.employId;
        //由于这里是网络请求,可能会在 Page.onLoad 之后才返回
        // 所以此处加入 callback 以防止这种情况
        if (this.employIdCallback){
           this.employIdCallback(res.employId);
        }
      }
    })
  },
  globalData: {
    employId: ''
  }
})
//index.js
//获取应用实例
const app = getApp()

Page({
  data: {
    albumDisabled: true,
    bindDisabled: false
  },
  onLoad: function () {
    //判断是用户是否绑定了
    if (app.globalData.employId && app.globalData.employId != '') {
      this.setData({
        albumDisabled: false,
        bindDisabled: true
      });
    } else {
      // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
      // 所以此处加入 callback 以防止这种情况
      app.employIdCallback = employId => {
        if (employId != '') {
          this.setData({
            albumDisabled: false,
            bindDisabled: true
          });
        }
      }
    }
  }
})

这样的话,就能实现想要的结果。执行顺序就是: 

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

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

微信小程序app.js onLaunch异步,首页onLoad先执行 的相关文章

  • 使用python搭建一个简易的Web服务

    介绍 简单的说 web服务器就是机器上监听了本地的IP和端口的一个进程 当有客户的请求进来时 它会响应客户的请求并返回相应的信息 客户端和服务端之间的通信基于HTTP协议 客户端可以是浏览器或者任何支持HTTP的应用 我们平时访问网页或手机
  • 2021-06-29 ffmpeg临时记录

    我们将 H264 和 AAC 码流存储为MP4文件的时候 就需要在 MP4文件中增加两个流通道 一个存储Video H264 一个存储Audio AAC 假设H264和AAC只包含单个流通道 avformat new stream 即在 A
  • 21. 实战:多线程+xpath抓取大量菜价信息(四种方法)

    目录 前言 目的 思路 代码实现 多线程 xpath 1 抓取单个页面 2 创建线程池 3 保存到文件 运行效果 完整代码 举一反三 多进程 xpath 多线程 bs4 多进程 bs4 总结 前言 我们学习了多线程 多进程对于提高效率的方法
  • Qt 的一些心得(背景设置,圆角,半透明)

    一 背景刷成黑色 前景色设为白色 方法一 paltette方式 经测试 该方法不会影响到其他控件 推荐使用 QPalette bgpal palette bgpal setColor QPalette Background QColor 0

随机推荐

  • SpringBoot课程笔记

    黑马程序员SpringBoot2课程笔记 一 基础篇 略 二 运维实用篇 1 SpringBoot运行与部署 略 2 SpringBoot配置 2 1 临时属性配置 可以在启动Boot程序时添加临时属性改变配置 2 1 1 属性加载优先级
  • java 静态类的实例_java中类的静态成员和实例成员

    一 基本介绍 java中的静态成员包括静态方法和静态成员变量 静态成员都是由static修饰的 java中的实例成员包括实例方法和实例成员变量 实例成员都没有被static修饰 二 使用语法 关于使用静态成员和实例成员的具体语法规则如下 p
  • 关于指针运算的一道题

    目录 刚看到这道题的时候我也和大多数小白一样感到无从下手 但是在我写这篇博客的前几分钟开始我对这道题有了一点点的理解 所以我就想着趁热打铁 写一篇博客来记录一下我的想法 题目如下 画图 逐一解答 题一 cpp cpp 1 c 2 POINT
  • 苹果手机10秒解除锁屏_忘记苹果锁屏密码10秒解决 音量键选择wipedata/

    导读 谈到苹果 大家应该都不陌生 有人问忘记手机密码了怎么办 另外 还有朋友想问oppo忘记图案解锁怎么办 这到底怎么回事呢 其实锁屏密码是四位数密码呢 下面是小编精心为你们整理的忘记苹果锁屏密码10秒解决 欢迎大家一起来阅读 忘记苹果锁屏
  • Android 获取当前应用的版本号和当前系统的版本号

    1 获取当前程序版本名 我们可以在AndroidManifest xml中设置程序的版本号等 如android versionName 1 0 那如果想在代码中获取这个版本号呢 可以用如下方法 这些修改版本号时只需要修改AndroidMan
  • 离线安装mariadb

    离线安装mariadb 文章目录 离线安装mariadb 一 下载Rpm包 二 按顺序安装依赖 galera安装 安装mariadb相关 三 安全配置 四 配置权限 五 通过navicat测试 一 下载Rpm包 前往MariaDB官网选择所
  • 如何写好一篇高质量的IEEE/ACM Transaction级别的计算机科学论文?

    http www zhihu com question 22790506 answer 81787300 f3fb8ead20 ea27429f8cbe31fd9183a68ccb41caa7 from timeline isappinst
  • uni——传参出现问题[object Object],[object Object]

    案例说明 后台需要的参数样式 goods lists good id 5 num 11 good id 9 num 3 good id 10 num 34 按照此格式传参发现 解决办法 出现 object Object 的原因通常是因为在将
  • linux 端口转发 udp,Linux Socat TCP/UDP端口转发及使用

    socat是不支持端口段转发 只适用于单端口或者少量端口 如果需要大量端口考虑使用 iptables 或 haproxy haproxy 只能转发TCP Socat安装 Centos 系统 yum install y socat Debia
  • 2023新能源汽车行业薪酬报告

    导读 数据表明 虽然受疫情封控等多重不利因素影响 但新能源汽车产业依然活力强劲 2022年 新能源汽车产销数据分别为 705 8 万辆和 688 7 万辆 同比增长分别为 96 9 和 93 4 连续 8 年保持全球第一 此外 新能源汽车市
  • C语言考试题目(一)

    一 单项选择题 本大题共25小题 每题2分 共50分 1 C语言的源程序通常的扩展名是 A cpp B obj C exe D c 2 下列选项中 属于多行注释 A B C D 3 以下不合法的字符常量是 A ab B 2 C A D n
  • bootstrap 框架学习笔记

    2019独角兽企业重金招聘Python工程师标准 gt gt gt http getbootstrap com 在这个上面下载bootstrap 为什么使用 Bootstrap 移动设备优先 自 Bootstrap 3 起 框架包含了贯穿于
  • Linux下SUDO出现Unable to resolve host XXX解决方法

    转载 Ubuntu环境 假设这台机器名字叫abc 机器的hostname 每次执行sudo 就出现这个警告讯息 sudo unable to resolve host abc 虽然sudo 还是可以正常执行 但是警告讯息每次都出来 而这只是
  • SAP调用HTTP和HTTPS

    HTTPS https archive sap com discussions thread 482084 Note 510007 SAP Kernel版本为721 SAP ECC 6 0 SAP BASIS700 调用公司的https还是
  • 常见hash加密及判定

    常见hash加密及判定 unix系系统 ES Unix 例子 IvS7aeT4NzQPM 说明 Linux或者其他linux内核系统中 长度 13 个字符 描述 第1 2位为salt 例子中的 Iv 位salt 后面的为hash值 系统 M
  • Xshell 执行python脚本

    XShell支持使用VB JS Python脚本去启动自动化任务 这里介绍如何写Xshell的Python脚本 首先要在脚本中定义一个Main 函数 Xshell会调用这个函数 也就是程序的入口 然后 通过官方提供的API去完成脚本的书写
  • 无线通信与编码_MATLAB实现OFDM载波频偏估计_含仿真代码

    为了解决频率选择性衰落信道引起的失真 OFDM系统在正交子载波上并行传输消息数据 然而 只有正交性得到保持时 OFDM才能够发挥其优势 在正交性得不到保持的情况下 系统会因为ISI和ICI而下降 总的来说 与载波信号相关的畸变有两种 一种是
  • 三个线程循环打印ABC

    思路 1 定义两个信号量 A的默认个数为1 B的默认值为0 一个用于打印A 一个用于打印B 2 A线程获取到信号量A后打印 A 打印完后释放一个信号量B 让B可以打印 3 B线程获取到信号量B后打印 B 打印完后释放一个信号量A 让A可以打
  • OpenCV教程——形态学操作。膨胀,腐蚀,开操作,闭操作,形态学梯度,顶帽,黑帽

    1 形态学操作 图像形态学操作 基于形状的一系列图像处理操作的合集 主要是基于集合论基础上的形态学数学 形态学有四个基本操作 膨胀 腐蚀 开 闭 2 膨胀与腐蚀 2 1 膨胀 跟卷积操作类似 假设有图像A和结构元素B 结构元素B在A上面移动
  • 微信小程序app.js onLaunch异步,首页onLoad先执行

    本来按照事件顺序 小程序初始化时触发App里的onLaunch 后面再执行页面Page里的onLoad 但是在onLaunch里请求授权信息本就为异步执行 等待返回值的时候Page里的onLoad事件就已经执行了 app js 代码 app