微信小程序quickstart项目中有关userInfoReadyCallback的解释

2023-05-16

userInfoReadyCallback 在index.js中定义,在app.js中使用

附app.js代码:

//app.js
App({
  onLaunch: function () {
    // 展示本地存储能力
    var logs = wx.getStorageSync('logs') || []
    logs.unshift(Date.now())
    wx.setStorageSync('logs', logs)

    // 登录
    wx.login({
      success: res => {
        // 发送 res.code 到后台换取 openId, sessionKey, unionId
      }
    })
    // 获取用户信息
    wx.getSetting({
      success: res => {
        if (res.authSetting['scope.userInfo']) {
          // 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框
          wx.getUserInfo({
            success: res => {
              // 可以将 res 发送给后台解码出 unionId
              this.globalData.userInfo = res.userInfo

              // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
              // 所以此处加入 callback 以防止这种情况
                if (this.userInfoReadyCallback) {
                  this.userInfoReadyCallback(res)
                }
            }
          })
        }
      }
    })
  },
  globalData: {
    userInfo: null
  }
})


                if (this.userInfoReadyCallback) {
                  this.userInfoReadyCallback(res)
                }

上面这句是判断 userInfoReadyCallback 是否定义了,若没定义,说明其在Page.onLoad 定义userInfoReadCallback 之前运行的,说明app.globalInfo.userInfo已经包含了用户登录的信息了。


 若定义了,说明在Page.onLoad比该语句返回的success结果之前已经运行了。此时的app.globalInfo.userInfo的值是空的,所以还需要再重新对其进行赋值。


再附上index.js代码


//index.js
//获取应用实例
const app = getApp()

Page({
  data: {
    motto: 'Hello World',
    userInfo: {},
    hasUserInfo: false,
    canIUse: wx.canIUse('button.open-type.getUserInfo')
  },
  //事件处理函数
  bindViewTap: function() {
    wx.navigateTo({
      url: '../logs/logs'
    })
  },
  onLoad: function () {
    if (app.globalData.userInfo) {
      this.setData({
        userInfo: app.globalData.userInfo,
        hasUserInfo: true
      })
    } else if (this.data.canIUse){
      // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
      // 所以此处加入 callback 以防止这种情况
      app.userInfoReadyCallback = res => {
        this.setData({
          userInfo: res.userInfo,
          hasUserInfo: true
        })
      }
    } else {
      // 在没有 open-type=getUserInfo 版本的兼容处理
      wx.getUserInfo({
        success: res => {
          app.globalData.userInfo = res.userInfo
          this.setData({
            userInfo: res.userInfo,
            hasUserInfo: true
          })
        }
      })
    }
  },
  getUserInfo: function(e) {
    console.log(e)
    app.globalData.userInfo = e.detail.userInfo
    this.setData({
      userInfo: e.detail.userInfo,
      hasUserInfo: true
    })
  }
})







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

微信小程序quickstart项目中有关userInfoReadyCallback的解释 的相关文章

随机推荐

  • 【Android】系统源码下载及编译

    源码及编译 步骤 1 xff1a 创建一个空目录来存放源码 xff1a mkdir aosp cd aosp 步骤 2 xff1a 获取最新版本的 repo 并签出 android 8 1 0 r1 分支 xff1a repo init u
  • Unity3D游戏作品大盘点

    原文链接 xff1a http www unitymanual com 404 html 经典重现 新仙剑OL 新仙剑OL 采用跨平台Unity3D引擎 xff0c 耗资数千万 xff0c 历时三年多 xff0c 由台湾大宇正版授权 xff
  • Linux常见软件包格式及安装讲解

    1 在Linux中安装应用软件 Linux这一新兴操作系统 xff0c 由于系统核心源代码完全公开的缘故 xff0c 存在着许多基于GPL协议之下的分发版本 在一片反行业垄断的呼声中 xff0c 这只小企鹅近年来的发展速度实在令人振奋 其中
  • MySQL数据库安装、全量备份、增量备份与恢复

    一 数据库安装 Mysql数据库安装路径 xff1a opt mysql Mysql数据库数据文件路径 xff1a opt mysql data Mysql数据库root用户登录密码 xff1a admin 1 安装MySQL之前先检查li
  • 拓扑排序(Topological Sorting)

    一 什么是拓扑排序 在图论中 xff0c 拓扑排序 xff08 Topological Sorting xff09 是一个有向无环图 xff08 DAG Directed Acyclic Graph xff09 的所有顶点的线性序列 且该序
  • libjvm.so共享库找不到

    redis 64 node 1 ggs ggsci ggsci error while loading shared libraries libjvm so cannot open shared object file No such fi
  • 如何修改新建脚本模板-ScriptTemplates(Unity3D开发之十五)

    猴子原创 xff0c 欢迎转载 转载请注明 xff1a 转载自Cocos2Der CSDN xff0c 谢谢 xff01 原文地址 http blog csdn net cocos2der article details 44957631
  • linux简易书单

    1 Linux程序设计 xff08 第4版 xff09 万千读者推荐的Linux经典入门书 程序设计实战型图书 xff0c 以简单易懂 内容全面和示例丰富而受到广泛好评 如果你没有Linux基础 xff0c 可以先读这本 话说回来 xff0
  • Spring Boot与RabbitMQ的整合消息确认

    strong span style font size 18px 消息生产者和消费者 span strong import com rabbitmq client Channel import org slf4j Logger import
  • tomcat7下载安装

    进入apache官网下载tomcat7在最左边的找到download下的tomcat 7并点击 选择 32 bit 64 bit Windows Server Installer 下载 下载完成后 xff0c 将安装文件移动到本地硬盘D 安
  • MPU9250调试笔记(融合磁力计计算Yaw)

    底部 附源码 2022 10 5 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 产品需要一个姿态传感器 xff0c 使用了MPU9250 xff0c 主要是算法库不太好找
  • 在sql语句中,like所有的用法

    在sql结构化查询语言中 xff0c like语句有着至关重要的作用 like语句的语法格式是 xff1a select from 表名 where 字段名 like 对应值 xff08 子串 xff09 xff0c 它主要是针对字符型字段
  • 解决当使用element table fix column 固定列时,滚动条在固定列下方无法滚动

    解决当使用element table fix column 固定列时 xff0c 滚动条在固定列下方无法滚动 在全局css中添加这行代码 xff0c 提高滚动条在z轴的坐标 建议使用下面的代码 xff0c 使用参考文章里面的代码会导致 右f
  • 使用funcraft管理阿里云函数计算

    Fun 是一个用于支持Serverless应用部署的工具 xff0c 能帮助您便捷地管理函数计算 API 网关和日志服务等资源 它通过一个资源配置文件 xff08 template yml xff09 xff0c 协助您进行开发 构建和部署
  • 阿里云 ServerLess:Todo list 应用安装

    安装Node js环境 执行如下命令 xff0c 下载Node js安装包 xff1a wget https npm taobao org mirrors node v12 4 0 node v12 4 0 linux x64 tar xz
  • Maven中pom.xml的scope

    一 compile xff1a 编译范围 compile是默认的范围 xff1b 如果没有提供一个范围 xff0c 编译范围依赖在所有的classpath 中可用 xff0c 同时它们也会被打包 而且这些dependency会传递到依赖的项
  • 如何通过CSS绘制三角形和小箭头

    1 绘制三角形的作用 xff0c 主要是提供指示性 xff0c 如下图 2 那么如何画出三角形呢 xff1f 我们先看下border的用法 lt div class 61 34 box 34 gt lt div gt box box siz
  • 利用python pil 实现给图片上添加文字

    最近的一个工程项目是讲文字添加到图像上 使用了opencv xff0c 结果发现利用opencv给图像添加文字有局限 xff08 1 xff09 可利用的字体类型比较少 xff0c 需要安装Freetype扩展 xff0c 比较复杂 xff
  • esp8266 error: espcomm_open failed

    gpi0 没有接地 xff0c 接上地就可以了注意和usb分出的gnd接口接的是同一个地
  • 微信小程序quickstart项目中有关userInfoReadyCallback的解释

    userInfoReadyCallback 在index js中定义 xff0c 在app js中使用 附app js代码 xff1a app js App onLaunch function 展示本地存储能力 var logs 61 wx