onlaunch 异步_小程序onLaunch异步,首页onLoad却先执行的解决办法

小程序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,如果有网络就处理加载项目数据,如果没有网络就给出没网络的友好提示图片页面。

The end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值