原文轉載自:微信小程序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!=''){
//執行操作。。
}
}
}
})
實現~