間引き(throttle / debounce)

デモ

この機能にはデモはありません

JSコードコピー

使い方

throttleは連続したイベントを一定間隔で処理します。(本コードは10回に1度)
画面をスクロールしたら〜などのイベントと組み合わせて使ってください。
debounceは連続したイベントの最後の1度が処理されます。
画面をリサイズしたら〜などのイベントと組み合わせて使ってください。

解説

JSコードの解説を見てみる

throttleは即時関数になっており、内部で自身が呼ばれた回数を保持するローカル変数callCountを持っています。
返却された関数はそのローカル変数を参照しており、10回に1度だけコールバック変数を処理するためのカウントアップ処理(++callCount)と10の倍数チェック(callCount % 10 === 0)を同時に行っています。

debounceは即時関数になっており、内部でタイマー情報を保持するローカル変数timerを持っています。
返却された関数はそのローカル変数を参照しており、300ミリ秒後にコールバック関数を処理するタイマー設定と、前に呼び出された時から300ミリ秒経過していなければ前をタイマーをキャンセルする、という処理を行っています。

ヘルプ・コンタクト

機能に関するご質問は、このページの下部に表示されている Twitter のアイコンから Twitter に遷移後、 DM 等でご連絡ください。
導入サポートやカスタマイズも有償にてお受け致しますので、 DM 等でご連絡ください。

他のコードを探す

リクエスト受付中です。
Twitter の固定ツイートか DM にてご連絡ください。