vue中实现防抖和节流
防抖函数的使用场景: 频繁触发、输入框搜索
<template>
<div>
<input type='text' v-model='value' @keydown = "hangleChange">
</div>
</template>
<script>
function debounce(func, wait=1000){ //可以放入项目中的公共方法中进行调用(鹅只是省事)
let timeout;
return function(event){
clearTimeout(timeout)
timeout = setTimeout(()=>{
func.call(this, event)
},wait)
}
}
export default{
name:'',
data(){
return{
value:''
}
},
methods:{
hangleChange:debounce(function(e){
console.log(this.value)
})
}
}
</script>
节流函数的使用场景:频繁触发、onrize,onscroll滚动条
<template>
<div class="scroll" ref="previewText" @scroll.passive="fnScroll">
</template>
<script>
export default{
name:'globalHospot',
data(){
return{
count:0,
fnScroll:() =>{}
}
},
methods: {
fnHandleScroll (e) {
console.log('scroll触发了:' + this.count++, new Date())
},
fnThrottle(fn, delay, atleast){ //节流函数
let timer = null;
let previous = null;
return function(){
let now = +new Date()
if(!previous) previous = now;
if(atleast && now - previous > atleast){
fn();
previous = now;
clearTimeout(timer)
}else{
clearTimeout(timer)
timer = setTimeout(()=>{
fn();
previous = null
},delay)
}
}
}
},
created(){
this.fnScroll = this.fnThrottle(this.fnHandleScroll, 1000) //刚创建时执行
},
}
</script>
我是一个对理想有着执着追求的人,坚信是金子总会发光。大学毕业后的工作,让我在文案策划方面有了很大的提高,文笔流畅,熟悉传媒工作、广告学制作与设计等工作方面。为人热情,活泼,大方, 本人好学上进,诚信、敬业、责任心强,有强烈的团体精神,对工作认真积极,严谨负责。
本人性格内外结合,适应能力强,为人诚实,有良好的人际交往能力,具备相关的专业知识和认真。细心、耐心的工作态度及良好的职业道德修养。相信团体精神的我对工作认真负责,总希望能把事情做得更好! 性格开朗,对文字语言和数字敏感,对生活充满希望,对工作充满热情! 能在短期间内适应新环境,有强烈的品质意识;对工作认真负责,上进心强! 懂电脑基本操作,熟练小键盘操作!
浙公网安备 33010602011771号