4***@qq.com
4***@qq.com
  • 发布:2022-05-24 16:17
  • 更新:2023-07-14 17:53
  • 阅读:892

【报Bug】监听网络后卸载网络状态监听uni.offNetworkStatusChange不生效

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win11

HBuilderX类型: 正式

HBuilderX版本号: 3.4.7

手机系统: iOS

手机系统版本号: iOS 15

手机厂商: 苹果

手机机型: iphon13

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

onLoad() {
let self = this;
let i = 0;
console.log('index.vue--onLoad--'+self.connect);
// 判断网络状态
uni.onNetworkStatusChange(function (res) {
i = i+1
console.log('监听网络次数'+i);
console.log('res.networkType----'+res.networkType+'----res.isConnected----'+res.isConnected);
if(res.networkType==='none' && !res.isConnected){
self.connect = false;
let msg = '暂时无网络连接\r\n请您检查是否系统设置=>蜂窝移动网络中是否允许移动OA使用蜂窝移动网络的流量';
if(uni.getSystemInfoSync().platform === 'android'){
msg='当前网络不可用,请检查你得网络设置';
}
uni.showModal({
title: '提示',
content: msg,
//showCancel: false,
success: function (res) {
if (res.confirm) {
console.log('刷新当前页');
}
}
});
}else {
self.connect = true;
console.log('--else--res.isConnected----'+res.isConnected);
uni.offNetworkStatusChange(function(){});
}
})

    },

操作步骤:

不断网络开关查看监听网络状态

预期结果:

调用uni.offNetworkStatusChange则会取消网络监听

实际结果:

调用uni.offNetworkStatusChange后,网络监听uni.onNetworkStatusChange回调仍然执行

bug描述:

首次进入onLoad监听网络状态uni.onNetworkStatusChange,当判断网络状态为连接后则卸载网络状态监听uni.offNetworkStatusChange不生效,每次切换网络后仍然进入监听网络状态判断

2022-05-24 16:17 负责人:DCloud_iOS_WZT 分享
已邀请:
DCloud_iOS_WZT

DCloud_iOS_WZT

https://uniapp.dcloud.io/api/system/network.html 滑到最下面看下注意事项

  • 4***@qq.com (作者)

    CALLBACK必须为调用uni.onNetworkStatusChange时传入的CALLBACK。主要是我取消网络监听后,监听网络仍然生效,不可取消

    2022-06-08 10:27

  • DCloud_iOS_WZT

    回复 4***@qq.com: 用的是一个callback嚒

    2022-06-08 11:05

i***@yeah.net

i***@yeah.net

在onUnload方法销毁当前页面后还会收到网络变化的监听,确认使用的是同一个callback

7***@qq.com

7***@qq.com

callback 不要用this.callback=function(){}
页面全局改用const networkchange=function(){},这样可以off掉

要回复问题请先登录注册