u***@yeah.net
u***@yeah.net
  • 发布:2023-04-23 18:00
  • 更新:2023-04-23 18:00
  • 阅读:693

【报Bug】uniapp 防抖防不住;

分类:uni-app

产品分类: uniapp/H5

PC开发环境操作系统: Windows

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

HBuilderX类型: 正式

HBuilderX版本号: 3.7.3

浏览器平台: Chrome

浏览器版本: 111.0.5563.147 (正式版本) (64 位) (cohort: Stable)

项目创建方式: HBuilderX

操作步骤:

新建项目,按照上诉类似的代码,做个例子;参数不需要相同;

预期结果:

每次点击触发按钮,发出事件后,在响应页面中onUserSelBack方法执行一次

实际结果:

onUserSelBack大多数只执行一次,但是有时候会执行3次,有时5次等。事件可能只发出了一次,但是响应了多次,这非常让人费解;更让人费解的是,通过变量控制是否执行下去,完全失效;
一次uni.$emit(), 触发了N次(不确定,大多数是1次)uni.$onb绑定是事件。

bug描述:

在一个页面中使用uni.$emit("selectUser"),(使用一个button去调用)

在另一个页面的mounted中
uni.$on("selectUser", this.onUserSelBack);

定义变量 doingMethod_TransferTaskToUser : false 用来标记方法是否正在执行中;
定义方法:
onUserSelBack_Throttle(e){
if(true == this.doingMethod_TransferTaskToUser){
console.log('防抖拒绝...')
return;
}
this.doingMethod_TransferTaskToUser = true;
console.log(e, '防抖执行中...', this.doingMethod_TransferTaskToUser);
try{
this.onUserSelBack(e)
}catch(ex){
}
this.doingMethod_TransferTaskToUser = false;
},

2023-04-23 18:00 负责人:无 分享
已邀请:

要回复问题请先登录注册