小程序onLaunch異步,首頁onLoad卻先執行的解決辦法
阿新 • • 發佈:2018-10-11
his ted pos ron hang tails ica oba 如果 小程序onLaunch異步,首頁onLoad卻先執行的解決辦法
首先在app.js中的onLaunch中寫入一個你要先執行的調用方法。如圖:
我這裏要在最開始onload之前獲取到網絡狀態:
getNetworkInfo()
//onLaunch異步,首頁onLoad先執行bug的處理 getNetworkInfo:function(cb){ var that = this if(that.globalData.isBtnStatus.NetworkStatus != ‘0‘){ typeof cb == "function" && cb(that.globalData.isBtnStatus.NetworkStatus) }else{ wx.getNetworkType({ success: function(res) { //console.log(‘onLaunch網絡:‘+res.networkType); // 返回網絡類型, 有效值:wifi/2g/3g/4g/unknown(Android下不常見的網絡類型)/none(無網絡) var networkType = res.networkType if (networkType != ‘none‘) { that.globalData.isBtnStatus.NetworkStatus = 1; typeof cb == "function" && cb(1); } } }) wx.onNetworkStatusChange(function(res) { if (that.globalData.isBtnStatus.NetworkStatus != res.isConnected && true == res.isConnected) { // WxNotificationCenter.postNotificationName("NetworkPageRefresh", true); } that.globalData.isBtnStatus.NetworkStatus = res.isConnected; typeof cb == "function" && cb( that.globalData.isBtnStatus.NetworkStatus); }) } },
然後再在項目pages裏面的首頁index.js中的onload裏面取值:
app.getNetworkInfo(function(retStatus){ //console.log(‘onLoad網絡NetworkStatus1:‘+retStatus); //console.log(‘onLoad網絡NetworkStatus2:‘+app.globalData.isBtnStatus.NetworkStatus); if (app.globalData.isBtnStatus.NetworkStatus == 1) { that.networkSucc(that); }else{ that.networkFail(that); } })
邏輯是:當進入onload,如果有網絡就處理加載項目數據,如果沒有網絡就給出沒網絡的友好提示圖片頁面。
思路來源:
https://blog.csdn.net/qq_29246395/article/details/77567365
The end
小程序onLaunch異步,首頁onLoad卻先執行的解決辦法