1 //使用場景 2 created(){ 3 this.$watch('query',debounce((newQuery)=>{//當搜索值發生變化的時候,將搜索值傳遞出去 4 this.$emit('query',newQuery )//如果在200ms內再次觸發函數,不會調用里面的query事件; 5 },200)) 6 }
1 export function debounce(func, delay) { 2 let timer 3 return function (...args) {//我們調用一個函數,他會返回一個參數;我們拿到這個參數; 4 if (timer) { 5 clearTimeout(timer) 6 } 7 timer = setTimeout(() => {//定義延時函數; 8 console.log('33333333333333333333333333333333333333節流函數冊數') 9 console.log(this) 10 func.apply(this, args)//箭頭函數中的this指向符集作用域;對象中有屬性,方法,但並沒有this 11 }, delay) 12 } 13 } 14 15 // 節流函數的原理 16 // 我們對某個函數進行節流,他會返回一個新的函數,新的函數會延遲執行我們要節流的這個函數;我們返回的函數反復被調用,不會總是觸發我們的func函數;