关于节流函数return function(...args)
// 函数节流
export const debounce = (func, delay = 200) => {
let timer = null;
return function (...args) {
// 清除上一次的定时器
timer && clearTimeout(timer);
timer = setTimeout(() => {
// 延时时间到了之后执行需要执行的函数
func.apply(this, args);
}, delay);
};
args的参数是如何传递给debounce的func参数?debounce没有arg参数呀?内部返回的函数参数怎样能传给func?
query: debounce(function () {
this.$emit('query', this.query);
})
这里的debounce参数func是一个函数,执行函数派发事件,那debounce内部返回的函数如何传args给function()?17
收起
正在回答 回答被采纳积分+1
2回答
好帮手慕夭夭
2019-08-20 11:29:31
你好同学,首先参考如下去理解debounce的使用:
假设有个函数fn,需要限制1s只执行一次。先传入debounce,返回一个新函数fn1。

因为debounce内部返回了一个函数,所以fn1接收的debounce返回值就它内部的函数。即调用fn1执行的就是它

调用fn1传入实际的参数,所以args这个参数是调用fn1时传入的x。

而然后将x通过appley方法传给func哦。课程里面就是这样,调用函数debounce,query接收了它的返回值。

课程中是使用的双向数据绑定调用的query,所以query会接收这些输入的内容作为实际参数。(因为debounce是通用的函数,肯定要考虑多个参数的情况,所以使用扩展运算符的形式把这些参数放在一个数组arg中。案例中是传入一个)。即搜索框输入的内容就是实际参数,然后arg形参接收了这些实际的参数。

所以在内部函数中,通过apply调用func把参数传递了过去

祝学习愉快,望采纳。
4.Vue与React高级框架开发
- 参与学习 人
- 提交作业 239 份
- 解答问题 10739 个
本阶段带你深入前端开发的肌理,通过ES6基础知识和前端主流高级框架的学习,助你快速构建企业级移动webAPP应用,进入职场的终极battle
了解课程



恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星