帮我写一个vue2的节流函数 并举例
时间: 2023-08-28 22:20:41 浏览: 85
好的,节流函数可以通过使用定时器来实现。在函数被触发时,首先判断是否有定时器,如果没有,则设置一个定时器并执行函数;如果有定时器,则不执行函数。在定时器执行完毕之后,再次判断是否有定时器,如果有,则继续设置定时器并执行函数,直到定时器被清除。
以下是一个简单的Vue2的节流函数的实现:
```javascript
function throttle(fn, delay) {
let timer = null;
return function() {
const context = this;
const args = arguments;
if (!timer) {
timer = setTimeout(() => {
fn.apply(context, args);
timer = null;
}, delay);
}
};
}
```
其中,fn是要进行节流的函数,delay是节流的时间间隔,单位为毫秒。
举个例子,比如我们有一个滚动事件,当用户滚动页面时触发一个函数,但是如果用户频繁滚动,可能会导致函数频繁触发,影响性能。我们可以使用节流函数来限制函数的触发频率,例如:
```html
<template>
<div class="container" @scroll="throttleScroll">
<!-- 省略内容 -->
</div>
</template>
<script>
import throttle from './throttle.js';
export default {
methods: {
scrollHandler() {
console.log('scrolling...');
// 做一些滚动事件的操作...
},
throttleScroll: throttle(function() {
this.scrollHandler();
}, 100),
},
};
</script>
```
在这个例子中,我们使用了throttle函数来创建一个节流版本的scrollHandler函数,当用户滚动页面时,会触发throttleScroll函数,而不是直接触发scrollHandler函数。throttleScroll函数会限制函数的触发频率,每100ms触发一次scrollHandler函数。这样就可以避免用户频繁滚动导致函数频繁触发,提高了性能。
阅读全文