收藏
回答

页面初始数据page(onLoad())的时候,如果拿到app(onLaunch())返回的数据?

生命周期问题,页面启动无法即时或者先拿到小程序启动时的数据,需要后期或者延时才能拿到

小程序启动

app({
  onLaunch(){
    服务器获取openid,设置到全局
  },
  globalData: {
  openid: null,
 }
})

此时index页面加载

const app = getApp()
Page({
  data: {
    text: "This is page data."
  },
  onLoad: function(options) {
    console.log(app.globalData.openid)
    拿不到数据,  需要用
    // Do some initialize when page load.
  },
})

是生命周期没有先后顺序吗,

怎么样才能让,保证app(onLaunch())完成后,执行page(onLoad()),我感觉是异步了,没有先后顺序,有时用延时才能拿到数据,你们有好的办法吗

最后一次编辑于  2021-08-05
回答关注问题邀请回答
收藏

4 个回答

  • 卢霄霄
    卢霄霄
    2021-08-05

    https://developers.weixin.qq.com/s/IN5zkkm77hsa

    2021-08-05
    有用 1
    回复 5
    • 卫东
      卫东
      2021-09-03
      这是有多无耻
      2021-09-03
      回复
    • 卢霄霄
      卢霄霄
      发表于小程序端
      2021-09-06回复卫东

      咋了呢

      2021-09-06
      回复
    • Api调用师
      Api调用师
      2022-01-10
      试试新出炉的库,用完真香定律https://developers.weixin.qq.com/community/develop/article/doc/00002ac57208f0e7335d111f156013
      2022-01-10
      1
      回复
    • 蒋昊旻
      蒋昊旻
      2022-09-02
      setTimeout(()=>{
            this.globalData.openid = "abc"
            if(this.callbackArray.length) {
              let callbackArray = this.callbackArray
              this.callbackArray = []
              callbackArray.forEach((callback)=>{
                if(typeof callback === "function") callback(this.globalData.openid)
              })
            }
          },3000)


      代码块里的这部分没动,可以给讲讲吗?
      2022-09-02
      回复
    • 卢霄霄
      卢霄霄
      发表于小程序端
      2022-09-03回复蒋昊旻

      就是有个数组存放所有请求这个数据的回调方法,拿到数据后挨个回调

      2022-09-03
      回复
  • 维她命系
    维她命系
    2021-08-05

    是异步请求的原因,参考这篇文章:https://segmentfault.com/a/1190000013656710

    2021-08-05
    有用 1
    回复
  • Api调用师
    Api调用师
    2022-01-10

    试试新出炉的库,用完真香定律https://developers.weixin.qq.com/community/develop/article/doc/00002ac57208f0e7335d111f156013

    2022-01-10
    有用 1
    回复
  • 为了爱1号
    为了爱1号
    2021-08-05

    app(onLaunch()),在小程序初始化的时候,无法保障执行完,再进行page(onLoad()),如果把小程序最小化,再打开,就能发现app内的函数都执行完了,但是大多数用户都是首次打开,或者隔了好长时间才再次代开,这个时候小程序可能已经销毁,最好有一个方法,要早于所有生命周期之前那就好了。

    回调也是一种解决方法,可以满足我的需求,感谢。

    2021-08-05
    有用
    回复
登录 后发表内容