微信小程序 | 12.生命周期、globalData全局数据

article/2025/10/11 6:17:09

文章目录

  • 1.小程序的生命周期
  • 2.全局数据globalData
  • 3.globalData的应用
    • 3.1.搭配app.js的onLaunch()存储openid
    • 3.2.轮询globalData
      • 3.2.1.问题描述
    • 3.2.2.解决方式:轮询globalData

1.小程序的生命周期

小程序生命周期(onLaunch、onShow、onHide、onReady、onLoad、onUnload)

这篇文章讲得非常详细。

image-20211103223904011

执行顺序是:onLaunch => onLoad => onShow => onReady => onHide

2.全局数据globalData

image-20211103224949918

在app.js中定义了globalData,其中有userOpenId、userNickName等属性。

随后在需要用到这些数据的地方,调用getApp( ).globalData.属性名即可获取

image-20211103224741689

3.globalData的应用

3.1.搭配app.js的onLaunch()存储openid

上篇文章说到通过wx.login()获取code,再用code换取openid。

而通常wx.login()会写在app.js的==onLaunch()==中(小程序初始化完成后执行),当执行得到openid后,存储到globalData中以便调用。

image-20211103225328339

或者是取得openid后进一步发送请求到后端数据库,根据openid判断该用户是否首次登录、数据库是否拥有数据等。

3.2.轮询globalData

3.2.1.问题描述

在app.js中,globalData定义了userNickName和userAvatarUrl变量。而在onLaunch中获取到openid后,进一步向后端发送请求访问数据库,获取数据并对这两个变量赋值。

假如在一个页面的onLoad中,希望从globalData中获取userNickName,但此时还未从数据库中查出数据,此时该页面只能拿到globalData的默认值。

2021.11.03.23.34

虽然说其他页面的onLoad会在onLaunch执行完毕后方才执行,但发送请求是异步的,因此还没等到后端返回响应,将值赋给globalData,onLoad就已经被执行了。

如上,还没等app.js的onLaunch将值赋给globalData,另一个页面便已经从globalData完成了取值,此时便会出现错误。

3.2.2.解决方式:轮询globalData

当然也可以在onLoad中发起请求访问数据库。但既然globalData已经有数据,咱就用起来。

在微信小程序中有定时器,代码如下:

// 定义名为"a"的定时器,有两个参数:
// 第一个参数是执行的函数,第二个参数是间隔的时间(0.2s)
let a = setInterval(() => {if(终止条件){// 终止定时器clearInterval(a);}
}, 200)

据此,可以用定时器来轮询globalData,假设:

  • userNickName默认值为""
  • 当后端响应完毕,小程序会将globalData的userNickName设置为"zs"
// 页面加载时调用,一个页面只会调用一次
onLoad(){let userNickName;let a = setInterval(() => {// 当globalData的userNickName不再是默认值,说明已获取响应并完成赋值if(getApp().globalData.userNickName !== ""){userNickName = getApp().globalData.userNickName;// 终止定时器clearInterval(a);}}, 200)// 输出一下userNickNameconsole.log(userNickName);
}

http://chatgpt.dhexx.cn/article/T97qWZhg.shtml

相关文章

uniapp 全局静态数据(globalData)的修改和使用

uniapp 全局静态数据(globalData)的修改和使用 全局静态数据: 在App.vue中的调用: this.globalData.systemTitle在App.vue中的修改: this.globalData.systemTitle res.title在pages中调用: let title…

微信小程序全局变量(globalData)和缓存(StorageSync)的区别和用法

globalData和storage的区别 一、app.globalData 是全局变量,下次进入的时候,就要重新获取,一般用于: 1、保存一些可能涉及安全类的数据,例如资源类,每次需要很准确的,就建议用全局变量。 2、…

【分布式】什么是分布式技术?

背景: 初代的服务器架构往往比较简单,应用程序、数据库、文件、代码等所有资源都放在一台服务器上,也就是单机结构。随着企业业务量的增多,一台服务器已经难以满足数据处理的需求了,那么对单机进行“复制粘贴”&#…

(分布式网络)基于残差网络的多光谱全色图像分布式融合框架

贡献: ①基于分布式框架(distributed framework)和residual learning,提出了一种鲁棒性强、泛化性能提高的RDFNet泛锐化模型。 ②提出了一种新的三分支泛锐化结构,其中两个分支分别用于提取MS和PAN图像特征。其中最重要的是第三个分支&…

分布式-分布式服务

微服务API 网关 网关的概念来源于计算机网络,表示不同网络之间的关口。在系统设计中,网关也是一个重要的角色,其中最典型的是各大公司的开放平台,开放平台类网关是企业内部系统对外的统一入口,承担了很多业务&#xf…

C++实现轻量级RPC分布式网络通信框架

前言: 2022/4/14更新:  在我重新回顾这篇文章的时候,我觉得里面内容有点乱,主要还是因为RPC里面涉及到很多概念和知识点。本来代码内容就已经挺抽象了,还要结合各种概念,让人难以阅读,所以特地…

C++实现分布式网络通信RPC框架

分布式网络通信rpc框架 项目是分布式网络通信rpc框架(项目源代码链接) 博文中提到单机服务器的缺点: 硬件资源的限制影响并发:受限于硬件资源,聊天服务器承受的用户的并发有限模块的编译部署难:任何模块小…

分布式网络计算机,分布式网络

分布式网络(Distributed Network) [编辑] 什么是分布式网络 分布式网络也叫网状网络,如图1所示,它是由分布在不同地点的计算机系统互连而成,网中无中心节点。通信子网是封闭式结构,通信控制功能分布在各节点上。 [编辑] 分布式网络…

分布式 - 分布式体系架构:集群和分布式

文章目录 01. 什么是集群?02. 集群为什么可以提高系统的可靠性?03. 集群为什么可以提高系统的性能?04. 什么是分布式计算?05. 如何进行分布式计算?06. 集群如何提高计算效率?07. 集群的优点和缺点&#xff…

分布式集群中网络分区问题

分布式集群中网络分区问题 前言如何判断是否发生了网络分区?集中式架构的网络分区形态非集中式架构中的网络分区形态 网络分区最微妙的地方在哪里?网络分区出现概率较高的场景是什么?网络分区有哪些常见的处理方法?方法一&#xf…

网络:分布式和网络的区别

单机结构 我想大家最最最熟悉的就是单机结构,一个系统业务量很小的时候所有的代码都放在一个项目中就好了,然后这个项目部署在一台服务器上就好了。整个项目所有的服务都由这台服务器提供。这就是单机结构。 那么,单机结构有啥缺点呢&#…

分布式专题(一)什么是分布式

什么是分布式? 任务分解节点通信 分布式和集群的关系? 电商平台: 用户、 商品、订单、 交易 分布式: 一个业务拆分成多个子系统,部署在不同的服务器上 集群: 同一个业务,部署在多个服务器…

分布式系统与网络分区

在OpenStack中,数据库是主要系统“状态”的主要来源。大部分Core Projects都使用传统关系型数据库作为系统数据和状态的存储,另外如Ceilometer使用了MongoDB,还有其他Incubator Projects使用了Redis作为队列或者状态存储。数据库给OpenStack提…

分布式架构网络通信

在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有很多可实现远程通讯的技术,例如:RMI、Hessian、SOAP、ESB和JMS等,它们背后到底是基于什么原理实现的呢 1、基本原理 要实现网络机器间的…

企业分布式网络监控

IT 基础架构已成为提供基本业务服务的基石,无论是内部管理操作还是为客户托管的应用程序服务。监控IT基础设施至关重要,并且已经建立。SMB IT 基础架构需要简单的网络监控工具来监控性能和报告问题。通常,几个 IT 管理员配置网络设备、防火墙…

分布式网络通信框架(一)——集群和分布式

单机聊天服务器 缺点: 受限于硬件资源,服务器所能承受的用户并发量不够大; 任意模块修改,都会导致整个项目代码重新编译、部署; 系统中,有些模块是CPU密集型,有些是IO密集型,造成…

传统分布式网络架构

在同一个自治系统内,当主机A要和A主机B通讯时,需要把发给主机B的数据包先发给网关路由器A,路由器A根据路由表决定数据包下一跳发给路由器B或C,根据IP报文内携带的目的地址11.8.9.12,在路由表中查找最长匹配路由表项&am…

分布式网络基础

在分布式服务化架构设计中,服务与服务之间通信均是基于网络底层协议来实现的,于是我们需要对网络相关基础知识有一个基本的认知,这样在我们服务与服务之间进行通信(跨进程通信)过程能够在我们的脑图形成一个基本的数据传输流程以及其中的细节问题,这样对于我们在进行网络问题的…

服务计算 -- 搭建私有云

服务计算 – 搭建私有云 文章目录 服务计算 -- 搭建私有云下载VirtualBox及所需镜像安装虚拟机配置虚拟机存储位置创建虚拟机内部虚拟网络创建Base虚拟机(Centos为例)链接复制第二台虚拟机 远程桌面访问虚拟机安装图形化界面 下载VirtualBox及所需镜像 …

搭建自己的私有云盘

一、准备工作 centos8,nextcloud,mysql 二、安装docker(官方文档) $ yum install -y yum-utils $ yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo $ yum install -y https://dow…