问题描述
微信小程序中监听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,
}
`
复现步骤
[复现问题的步骤]
- 启动 '...'
- 点击 '....'
- 查看
[或者可以直接贴源代码]
预期结果
正常的使用节流防抖
实际结果
节流防抖return的函数不执行
系统信息:
- 发行平台: 微信小程序
- 操作系统 [如 iOS 12.1.2、Android 7.0]
- HBuilderX版本 2.6.16.20200424
- uni-app版本 [如使用Vue-cli创建/运行项目,则提供
npm run info
的运行结果] - 设备信息 微信小程序模拟器
补充信息
[根据你的分析,出现这个问题的原因可能在哪里?]
问题好像是return的函数没有执行
5条答案
按热度按时间oipij1gg1#
我也遇到了 老铁....
4ioopgfo2#
请问解决了没有
qnakjoqk3#
roejwanj4#
@izjing 用你的代码测试没有复现,请提供一下你的具体用法和示例工程。
huwehgph5#
@TheFrontEndLiu 你的写法可能有问题,你需要调用返回的闭包