js节流
节流(throttle) 第一步
- 实现一个函数,返回一个函数func
- 参数,第一个参数是一个函数,第二个参数是一个数字time
- 当频繁调用返回的函数func时,有规律地time时间执行一次
function throttle(func, timeout) {
let timer;
return function () {
if (timer) {
return;
}
// 每次调用都指定timeout后再执行
timer = setTimeout(() => {
timer = null;
func();
}, timeout);
};
}
第二步
- 函数可以传参数
- 在func调用时要使用function ()的上下文this
function throttle(func, timeout) {
let timer;
return function () {
if (timer) {
return;
}
// 每次调用都指定timeout后再执行
timer = setTimeout(() => {
timer = null;
func.apply(this, Array.from(arguments));
}, timeout);
};
}
推荐阅读
- Throttle|Throttle 和 Debounce 的本质及一个简单的实现
- 增效降本开源节流,2022年技术趋势前瞻(异步编程/容器技术)
- 字节流转换为字符串的方法
- 3句话帮你搞定Java I/O底层原理之一(字符流、字节流及其区别)
- Java——I/O(字节流、字符流与转换流 )
- 有了字节流,为什么还要有字符流
- 基于Vue-cli的手写轮播图(无限轮播,切换,点击预览)【函数节流】
- IO流|IO流 2018-05-07
- Java|Java 项目中使用 Resilience4j 实现客户端 API 调用的限速/节流机制
- 浅谈JavaScript节流与防抖