您好,登錄后才能下訂單哦!
小程序onLaunch異步,首頁onLoad卻先執(zhí)行的解決辦法
首先在app.js中的onLaunch中寫入一個你要先執(zhí)行的調(diào)用方法。如圖:
我這里要在最開始onload之前獲取到網(wǎng)絡(luò)狀態(tài):
getNetworkInfo()
//onLaunch異步,首頁onLoad先執(zhí)行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網(wǎng)絡(luò):'+res.networkType);
// 返回網(wǎng)絡(luò)類型, 有效值:wifi/2g/3g/4g/unknown(Android下不常見的網(wǎng)絡(luò)類型)/none(無網(wǎng)絡(luò))
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網(wǎng)絡(luò)NetworkStatus1:'+retStatus);
//console.log('onLoad網(wǎng)絡(luò)NetworkStatus2:'+app.globalData.isBtnStatus.NetworkStatus);
if (app.globalData.isBtnStatus.NetworkStatus == 1) {
that.networkSucc(that);
}else{
that.networkFail(that);
}
})
邏輯是:當進入onload,如果有網(wǎng)絡(luò)就處理加載項目數(shù)據(jù),如果沒有網(wǎng)絡(luò)就給出沒網(wǎng)絡(luò)的友好提示圖片頁面。
思路來源:
https://blog.csdn.net/qq_29246395/article/details/77567365
The end
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。