1. 程式人生 > >小程序onLaunch異步,首頁onLoad卻先執行的解決辦法

小程序onLaunch異步,首頁onLoad卻先執行的解決辦法

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卻先執行的解決辦法