收藏
回答

关于页面生命周期函数onShow中获取页面app.js异步加载的问题

问题模块 框架类型 问题类型 操作系统 工具版本
开发者工具 小程序 Bug Windows Beta v1.0.2.1903251

- 当前 Bug 的表现(可附上截图)


app.js中的onLaunch函数添加了全局变量:

    var that = this;

    var openid = res.result.openid;

    that.globalData.openid = openid;


页面的onShow函数代码:

    onShow: function() {

        console.log('globalData',app.globalData)

        console.log('openid',app.globalData.openid)

    },


当前刷新页面,页面控制台显示如下:



目前这个返回结果,导致无法判断app.js是否已经加载完成


- 预期表现

如果是异步加载app.js,则在页面log中应该显示如下:

globalData undefined

 openid  undefined


- 复现路径


- 提供一个最简复现 Demo

app.js:

    var that = this;

    var openid = res.result.openid;

    that.globalData.openid = openid;


页面的onShow函数


    onShow: function() {

        var openid = app.globalData.openid

        console.log('globalData',app.globalData)

        console.log('openid',app.globalData.openidopenid)

    },


最后一次编辑于  2019-04-06
回答关注问题邀请回答
收藏

1 个回答

  • 老张
    老张
    2019-04-06

    如果仅仅是openId的话,我们是这样写代码的:

    https://developers.weixin.qq.com/community/develop/doc/0008089ec2c6200b81e76e6ac56804

    2019-04-06
    赞同
    回复 3
    • ㄨVincer
      ㄨVincer
      2019-04-06

      不只是openid,还有很多参数,也是要全局化的

      2019-04-06
      回复
    • 老张
      老张
      2019-04-06回复ㄨVincer

      app.js和page.onShow哪个先执行,是不确定的,所以,你在onShow里想取值,不一定已经在app.js里生成了。

      所以如果非要取的话,最好先判断一下是否为空。

      我的例子里的思路是,app.js和onShow里都是去调同一个函数,后一个调用的,先判断,再分支执行。

      2019-04-06
      回复
    • ㄨVincer
      ㄨVincer
      2019-04-06

      方便加一下你的微信吗

      2019-04-06
      回复
登录 后发表内容