请问小程序中的全局变量globalData如何存取?

来源:3-7 详解async await

白云南方

2020-12-09

在app.js的globalData中定义一个公共对象userInfo,当程序加载时实现自动登录更新userInfo对象内容,供其他页面之用。

这个异步问题究竟如何解决?小程序官网上也找不到app.globalData相关文档。

请老师和同学们指点一下。

//app.js
App({

  globalData:{
    userInfo:{}
  },

  onLaunch: function () {
    this.getUserInfo()
  },

  async getUserInfo() {
    const res = await wx.cloud.callFunction({
      name: 'login'
    })
    console.log('app::user:', res.result.data[0])
    this.globalData.userInfo = res.result.data[0]
  },
})

在page.js中获取globalData.userInfo

const app = getApp()
let userInfo = {}
Page({
  onLoad: function (options) {
    const app = getApp()
    const globalData = app.globalData
    console.log('page::globalData:', globalData)
    const userInfo = globalData.userInfo
    console.log('page::userInfo:', userInfo)
  },
})

运行结果是:
图片描述

写回答

1回答

谢成

2020-12-10

这个在课程中讲到了,可以这样做:让getUserInfo方法可以返回一个promise对象,然后在调用的地方.then就可以

0
3
白云南方
回复
谢成
最大的疑问就是globalData有什么作用,为啥有值取不出来,网上都在问这个问题。既然这样,还不如不用,就象你课程里讲的,用本地存储解决,setStorage/getStorage。所以想搞清楚globalData的正确使用姿式。
2020-12-11
共3条回复

微信小程序云开发-从0打造云音乐全栈小程序

横跨小程序端、云后端、CMS一站式云开发的小程序全栈课程

1938 学习 · 2768 问题

查看课程