触发高频事件后n秒内函数只会执行一次,如果在n秒内高频事件再次被触发,则重新计算时间。简单的说也就是一定时间段的无论点击多少次,只会执行最后一次的调用,前面的会被清除。
<template>
<el-input v-model="text" @input="debounceInput" />
</template>
<script>
export default {
mounted () {
this.debounceInput = this.debounce(this.handle, 1000,false)
},
data () {
return {
text: '',
debounceInput: () => {},
}
},
methods: {
handle (value) {
console.log(value)
},
debounce (func, delay = 1000, immediate = false) {
let timer = null
//不能用箭头函数
return function () {
//在时间内重复调用的时候需要清空之前的定时任务
if (timer) {
clearTimeout(timer)
}
//适用于首次需要立刻执行的
if (immediate && !timer) {
func.apply(this,arguments)
}
timer = setTimeout(() => {
func.apply(this,arguments)
}, delay)
}
},
}
}
</script>
来源:稀土掘金
作者:hinotoyk
链接:https://juejin.cn/post/7006257717820162056
我的评论呢?
之前说过给你推给我室友了,让他学vue,怎么没了??
我刚看到~给精选了才能显示的哈哈,已经精选了哈
给你推给我的室友了,让他学一下vue。
好的好的