封裝防抖工具型方法
/**
* @description: 防抖函式的封裝
* @param {Function} callback : 要執行的代碼
* @param {String} time : 要倒計時的時間(停止后多久執行邏輯代碼)
* @return: 回傳防抖函式
*/
function fandou (callback, time) {
let timer = null // 宣告一個將要存放定時器的變數
return function () { // 回傳一個函式
clearTimeout(timer) // 清空定時器
timer = setTimeout(() => { // 給變數賦予倒計時邏輯
callback() // 呼叫傳進來的回呼函式
}, time) // 等待執行邏輯代碼的時間為傳入的 time 引數
}
}
封裝節流工具型方法 1
/**
* @description: 節流函式的封裝
* @param {Function} callback : 要執行的代碼
* @param {String} time : 要倒計時的時間(停止后多久執行邏輯代碼)
* @return: 回傳節流函式
*/
function jieliu (callback, time) {
let timer = null // 宣告一個將要存放定時器的變數
let beginTime = Data.now() // 獲取開始時的時間戳
return function () { // 回傳一個工具方法
clearTimeout(timer) // 清除定時器
let space = Data.now() - beginTime // 獲取( 當前時間戳(觸發事件時) - 開始時間戳 )
if(space >= time){ // 判斷是否 大于等于指定時間
callback() // 執行傳入的邏輯代碼
beginTime = Data.now() // 跟新開始時間
} else { // 觸發事件間隔小于 傳入的時間
timer = setTimeout(() => { // 設定定時器 進入倒計時
callback() // 執行傳入的邏輯代碼
}, tiem) // 等待時間為 傳入的 time
}
}
}
封裝節流工具型方法 2
/**
* @description: 節流函式的封裝
* @param {Function} callback : 要執行的代碼
* @param {String} time : 要倒計時的時間(停止后多久執行邏輯代碼)
* @return: 回傳節流函式
*/
function jieliu (callback, time) {
let isPlay = false // 宣告一個 開關 (關閉的開關 -> 可以理解成要打游戲 現在false是還沒有進入對局 此時可以開始新的游戲對局)
return function () { // 回傳節流方法
if(!isPlay) { // 判斷開關狀態
isPlay = true // 改變開關狀態 (true -> 此時已經開始游戲對局 就不能在開始新的游戲對局)
setTimeout(() => { // 定時器邏輯
callback() // 執行 傳入的邏輯代碼
idPlay = false // 執行完畢 關閉開關 (對局結束 可以開啟下一把)
}, time) // 觸發事件之后多久執行邏輯代碼
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/250131.html
標籤:其他
上一篇:位元幣上的數獨游戲合約
