uni-app uniapp编译到小程序节流防抖失效?

vptzau2j  于 2022-11-02  发布在  uni-app
关注(0)|答案(5)|浏览(444)

问题描述

微信小程序中监听onPageScroll滚动事件,里面用节流和防抖失效,其它事件中也是失效的
`/函数节流/
function throttle (func, wait) {
let timeout
return function () {
console.log(111);
const context = this
const args = arguments
if (!timeout) {
timeout = setTimeout(function () {
timeout = null
func.apply(context, args)
}, wait)
}
}
}

/函数防抖/
function debounce(fn, interval) {
var timer;
var gapTime = interval || 200;
return function() {
clearTimeout(timer);
var context = this;
var args = arguments;//保存此处的arguments,因为setTimeout是全局的,arguments不是防抖函数需要的。
timer = setTimeout(function() {
fn.apply(context,args);
}, gapTime);
}();
}
module.exports = {
debounce: debounce,
throttle: throttle,
}
`

复现步骤

[复现问题的步骤]

  1. 启动 '...'
  2. 点击 '....'
  3. 查看

[或者可以直接贴源代码]

预期结果

正常的使用节流防抖

实际结果

节流防抖return的函数不执行

系统信息:

  • 发行平台: 微信小程序
  • 操作系统 [如 iOS 12.1.2、Android 7.0]
  • HBuilderX版本 2.6.16.20200424
  • uni-app版本 [如使用Vue-cli创建/运行项目,则提供 npm run info 的运行结果]
  • 设备信息 微信小程序模拟器

补充信息

[根据你的分析,出现这个问题的原因可能在哪里?]

问题好像是return的函数没有执行

oipij1gg

oipij1gg1#

我也遇到了 老铁....

4ioopgfo

4ioopgfo2#

请问解决了没有

qnakjoqk

qnakjoqk3#

onPageScroll:throttle(function(){
		this.showImg()
	},200),
roejwanj

roejwanj4#

@izjing 用你的代码测试没有复现,请提供一下你的具体用法和示例工程。

huwehgph

huwehgph5#

@TheFrontEndLiu 你的写法可能有问题,你需要调用返回的闭包

相关问题