//1.與router文件並列新建一個utils/unils.js,在里面編寫頁面防抖方法
// 用於存儲工具方法
export default {
debounce (fn, wait, time) {
var previous = null // 記錄上一次運行的時間
var timer = null
return function () {
var now = +new Date()
if (!previous) previous = now
// 當上一次執行的時間與當前的時間差大於設置的執行間隔時長的話,就主動執行一次
if (now - previous > time) {
clearTimeout(timer)
fn()
previous = now // 執行函數后,馬上記錄當前時間
} else { // 否則重新開始新一輪的計時
clearTimeout(timer)
timer = setTimeout(function () {
fn()
}, wait)
}
}
},
throttle (fn, time) {
let _self = fn
let timer = ''
let firstTime = true // 記錄是否是第一次執行的flag
return function () {
let args = arguments // 解決閉包傳參問題
let _me = this // 解決上下文丟失問題
if (firstTime) { // 若是第一次,則直接執行
_self.apply(_me, args)
firstTime = false
return
}
if (timer) { // 定時器存在,說明有事件監聽器在執行,直接返回
return false
}
timer = setTimeout(function () {
clearTimeout(timer)
timer = null
_self.apply(_me, args)
}, time || 500)
}
},
}
//2.在頁面調用
// 監聽頁面滾動防抖
this.addEvent(document, 'scroll', this.$utils.debounce(this.tableScroll, 100))
// 輸入搜索節流 [左側欄輸入搜索]
let searchOrgan = document.getElementById('searchOrgan') //獲取搜索框
this.addEvent(searchOrgan, 'keyup', this.$utils.throttle(this.searchOrganEven, 300))
