微信小程序onLaunch、onLoad执行生命周期

时间:2020-12-31 14:42:13

原文转载自:微信小程序onLaunch、onLoad执行生命周期

1、需求:先执行App的onLaunch添加验证权限等,再执行Page里的onLoad。

2、问题:还没有等onLaunch执行完成,onLoad就已经开始执行了。

3、解决办法:定义回调函数。

4、具体实现:Page页面判断一下当前app.globalData.employld是否有值,如果没有(第一次)定义一个app方法(回调函数),App页面在success后判断有没有page页面定义的回调方法,如果有就执行,因为回调函数是在Page页面内,方法作用域应指向的是Page页面。

  

app.employIdCallback = employId => {...}。

 

App.js

App({
    onLaunch:function(){
        wx.request({
            url: 'test.php', 
            succrss:(res)=>{
                this.globalData.employId = res.employId;
                //由于这里是网络请求,可能会在 Page.onLoad 之后才返回
                // 所以此处加入 callback 以防止这种情况
                if (this.employIdCallback){
                   this.employIdCallback(employId);
                }
            }
        })
    },
    globalData: {
        employId: ''
    }
});    

index.js

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

Page({
    data:{},
    onLoad:function(){
        //判断是用户是否执行完了请求,绑定了信息
        if (app.globalData.employId && app.globalData.employId != '') {
        //执行操作
     }else{
      //由于请求是网络请求,可能会在Page.onLoad后才返回
      //所以加入callback 防止这种情况
      app.employIdCallback = employId =>{
        if(employId!=''){
          //执行操作。。
        }
      }
    } 
})

 

实现~