456棋牌游戏中心

小程序onLaunch执行异步,如何解决onLoad先执行的问题?

2018/10/1 18:34:29
摘要: 小程序开发时,按照事件顺序,小程序初始化触发APP的onlaunch后,在去是行页面Page的onload。但现实常常是,由于onlaunch

小程序开发时,按照事件顺序,小程序初始化触发APP的onlaunch后,在去是行页面Page的onload。但现实常常是,由于onlaunch里在请求获取是否有权限、等待返回值的时候,页面page里的onload事件已经执行了。那么,这个问题该如何去解决呢?小编get到一种方式,下面跟大家分享一下。

  要想实现等onLaunch请求完再执行Page的onLoad,其实可以采用定义一个回调函数的方法。Page页面要判断一下当前app.globalData.employId是否有值,没有的话,则定义一个app方法(回调函数)app.employIdCallback = employId => {...}。

而App页面在请求success后,去判断是否有Page页面定义的回调方法,如果有就执行该方法。另外,因为回调函数是在Page里面定义的,所以方法作用域this是指向Page页面。

下面我们看一下示例代码:

//app.js

App({

  onLaunch: function () {

    wx.request({

      url: 'test.php', //仅为示例,并非真实的接口地址

      data: {

      },

      success: function(res) {

        this.globalData.employId = res.employId;

        //由于这里是网络请求,可能会在 Page.onLoad 之后才返回

        // 所以此处加入 callback 以防止这种情况

        if (this.employIdCallback){

           this.employIdCallback(res.employId);

        }

      }

    })

  },

  globalData: {

    employId: ''

  }

})

 

//index.js

//获取应用实例

const app = getApp()

Page({

  data: {

    albumDisabled: true,

    bindDisabled: false

  },

  onLoad: function () {

    //判断是用户是否绑定了

    if (app.globalData.employId && app.globalData.employId != '') {

      this.setData({

        albumDisabled: false,

        bindDisabled: true

      });

    } else {

      // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回

      // 所以此处加入 callback 以防止这种情况

      app.employIdCallback = employId => {

        if (employId != '') {

          this.setData({

            albumDisabled: false,

            bindDisabled: true

          });

        }

      }

    }

  }

})

这样,它的执行顺序就变成如下:

[App] onLaunch -> [Page] onLoad -> [App] onLaunch sucess callback


声明:文章"小程序onLaunch执行异步,如何解决onLoad先执行的问题?"为互诚科技—微信小程序开发公司的原创文章,转载请注明出处,谢谢合作!
标签:小程序干货
电话咨询:18011971195(黄先生)
在线留言:
微信扫码,关注我们
456棋牌游戏中心相关的文章
  • 小程序开发市场为什么由冷变热?

    据统计,在微信小程序的开发市场上看,六月份开始光广州地区的开发公司就已经增至上千家,而推动开发公司增加的要点就是开发市场需求的增加。说到这里,有人就会疑惑,明明小程序之前的开发市场是比较冷淡的,为什么小编现在会在这里把它的市场说得如此火热?所以作为一个负责任的小编,有必要来说一下小程序的开发市场为什么由冷变热?

  • 个人开发者如何开发微信小程序

    虽然微信小程序一开始并不支持个人开发者开发小程序,但是后来依旧放开了这一限制,只要实名认证的个人就可以成为小程序的开发者,加入到这一潮流行列当中。不过,个人开发者中有懂代码的、有技术人员支持的、当然也有没人才又不懂代码的,到底个人开发者要如何去开发微信小程序呢?这个问题值得我们来好好探讨一番。

  • 关于电商小程序的变现方式分析

    很多人都以为小程序在电商行业中的应用会给电商商家带来很强的获取流量而盈利的作用,但是这只是主观想法,必须要

  • 小程序之间相互跳转功能可以怎么运用

    前阵子微信官方又开放了一个小程序新功能,就是不同的小程序之间可以相互跳转,这可谓是一石激起千成浪,一下子微信小程序这个圈子又像炸开了锅一样欢欣鼓舞。这是为什么?最主要的还是因为,这个功能又带来一些商机,所以看到了这些商机的企业商家,当然就会欢欣鼓舞了。下面就由互诚科技半桶水小编来为大家揭秘,

  • 初创企业开发微信小程序会有什么好处

    相比起APP开发,微信小程序开发对于刚刚步入创业阶段的企业来说会是更好的选择,在资金、人力、物力都还不成熟的阶段,企业开发小程序会比开发App获得更多的好处。这些好处主要就有以下三个部分:

  • 微信小程序开发技术教程:视图容器组件详解(三)

    接上次视图容器组建详解(一)与(二),我们今天把最后两个组件样式

天天乐棋牌APP下载 69棋牌 京都棋牌 555棋牌游戏 光明棋牌 555棋牌游戏 宝乐彩票平台 69棋牌 光明棋牌 翡翠棋牌