ジッタ防止とスロットルへの関数
1883 ワード
前言
フロントエンドプロジェクトでは、関数の振れ防止とスロットルは、合格したフロントエンドエンジニアとして身につけなければならない知識であるはずです.
関数のブレ止めと絞りは何ですか
なぜブレ止めとスロットルを身につけるのか
関数スロットル(throttle)と関数ジッタ防止(debounce)はいずれも関数の実行頻度を制限することができ、異なるシーンに基づいて実行頻度を制限し、関数のトリガ頻度が高すぎることによる応答速度がトリガ周波数に追いつかず、遅延、仮死、カートンの現象が発生することを回避した.
関数のジッタ防止とスロットル応用例と実現
var timer = null
function debounce(fn,time){
// 500ms
clearTimeout(time)
setTimeout(function(){
console.log('==== =====')
fn()
},time)
}
// input change
element.addEventListener("input", function(event) {
debounce(searchFunc,500)
})
//
searchFunc(){
console.log('====serch=====')
}
インスタンスコード2-閉パッケージ実装:
//
var startTime = 0
function throttle(fn,time){
let nowTime = (new Date()).valueOf()
if(nowTime-startTime > time){
fn()
startTime = nowTime
}
}
document.addEventListener("mousemove",function(){
// 1 drag
throttle(drag(),1000)
});
function drag(){
console.log('===== =====')
}
インスタンスコード2-閉パッケージ実装://