js振れ防止関数とスロットル関数
1540 ワード
目次
ジッタ防止関数
コード#コード#
使用
しぼりかんすう
コード#コード#
使用
ジッタ防止関数
delay時間内にこの関数が複数回トリガーされると再カウントされます
適用シーン
1.リスニング画像のロードが完了したかどうか、画像のloadイベントで、頻繁にトリガーされ、使用可能
2.キーボードのkeyupイベントは、ユーザーが入力を停止したときに要求を送信し、使用可能
コード#コード#
使用
しぼりかんすう
delay単位時間では、関数は1回しかトリガーできません.この時間内に複数の関数がトリガーされると、1回だけ有効になります.
適用シーン
1.一定時間ごとにネットワーク要求を行う必要がある場合は、
2.マルチキャストマップの頻繁なトリガスライドは、ある時間に一度しかスライドできないように設定し、使用可能
コード#コード#
使用
ジッタ防止関数
コード#コード#
使用
しぼりかんすう
コード#コード#
使用
ジッタ防止関数
delay時間内にこの関数が複数回トリガーされると再カウントされます
適用シーン
1.リスニング画像のロードが完了したかどうか、画像のloadイベントで、頻繁にトリガーされ、使用可能
2.キーボードのkeyupイベントは、ユーザーが入力を停止したときに要求を送信し、使用可能
コード#コード#
// ,
export function debance(func, delay) {
//
let timer = null;
return function(...args) {
// , ,
if (timer) clearTimeout(timer)
timer = setTimeout(() => {
func.apply(this, args)
}, delay)
}
}
使用
//
this.refresh = debance(this.$refs.detailScroll.refresh, 100)
//
this.$bus.$on('detailGoodsItemImgLoad', () => {
this.refresh();
})
しぼりかんすう
delay単位時間では、関数は1回しかトリガーできません.この時間内に複数の関数がトリガーされると、1回だけ有効になります.
適用シーン
1.一定時間ごとにネットワーク要求を行う必要がある場合は、
2.マルチキャストマップの頻繁なトリガスライドは、ある時間に一度しかスライドできないように設定し、使用可能
コード#コード#
//
function throttle(fn,delay) {
//
let lock= true;
return function (...args) {
// ,
if (!lock) return;
// , , false
lock= false;
setTimeout(() => {
fn.apply(this, args);
// ,
lock= true;
}, delay);
};
}
使用
function demo(){
console.log('----')
}
//
this.refresh = throttle(demo, 100)
//
this.$bus.$on('detailGoodsItemImgLoad', () => {
this.refresh();
})