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

时间:2022-06-11 00:37:48

原文转载自:微信小程序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!=''){
          //执行操作。。
        }
      }
    } 
})

实现~