新建项目,按照上诉类似的代码,做个例子;参数不需要相同;
![u***@yeah.net](https://img-cdn-tc.dcloud.net.cn/account/identicon/85d386a38ed2f6a7cac9524b0fa0d2bd.png)
- 发布:2023-04-23 18:00
- 更新:2023-04-23 18:00
- 阅读:693
产品分类: uniapp/H5
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: win10
HBuilderX类型: 正式
HBuilderX版本号: 3.7.3
浏览器平台: Chrome
浏览器版本: 111.0.5563.147 (正式版本) (64 位) (cohort: Stable)
项目创建方式: HBuilderX
操作步骤:
预期结果:
每次点击触发按钮,发出事件后,在响应页面中onUserSelBack方法执行一次
每次点击触发按钮,发出事件后,在响应页面中onUserSelBack方法执行一次
实际结果:
onUserSelBack大多数只执行一次,但是有时候会执行3次,有时5次等。事件可能只发出了一次,但是响应了多次,这非常让人费解;更让人费解的是,通过变量控制是否执行下去,完全失效;
一次uni.$emit(), 触发了N次(不确定,大多数是1次)uni.$onb绑定是事件。
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;
},
0 个回复