写一个LRU缓存函数
LRU就是最近最少访问
1 | var LRUCache = function(capacity) { |
写个防抖和节流函数
防抖(debounce)函数
在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27// 自己遇到过的场景:公装云首页8秒弹窗,切换tab重新计时;
function modal(params) {
let times;
if(times){
clearTimeout(times)
}
times = setTimeout(function () {
showModal() // 显示具体弹框函数
}, 8000)
}
// 其他写法
function debounce(func, wait) {
let timeout;
return function () {
let context = this;
let args = arguments; // arguments对象是func 传入的参数
if (timeout) clearTimeout(timeout);
timeout = setTimeout(() => {
func.apply(context, args)
}, wait);
}
}
debounce(count,1000); // 调用节流(throttle)函数
规定在一个单位时间内,只能触发一次函数。如果这个单位时间内触发多次函数,只有一次生效。
1 | // 定时器加锁版 |
区别
他们都是可以防止一个函数被无意义的高频率调用,区别在于:
函数节流:是确保函数特定的时间内至多执行一次。 函数防抖:是函数在特定的时间内不被再调用后执行。
- 本文链接:http://www.yijun.xyz/2021/05/24/some-questions-and-answers/
- 版权声明:本博客所有文章除特别声明外,均默认采用 许可协议。