シェイク
その後、イベントn秒で起動するコールバック、そして、これはその後、再タイミング、n秒でトリガされた場合:コンセプト。
例:エレベーターに誰かが、そのエレベーターはエレベーターに誰かが、私たちは出発前に10秒間待つ必要が続いた場合、10秒後に開始されます。
アイデア:あなたは、再起動のタイミングにタイマーを空にしている場合は、この変数はタイミングを表す場合、変数を維持することによって閉鎖が開始時刻前に、始まりました。
関数デバウンス(FN、時間){ タイマーせ = NULL ; 戻り 関数(){ コンテキストせ = この LETの引数 = 引数を 場合(タイマー){ てclearTimeout(タイマ)。 タイマー = nullを。 } タイマー = setTimeoutメソッド(関数(){ fn.apply(文脈、引数) }、時間) } } window.onscroll =デバウンス(関数(){ にconsole.log( '触发:' + 新しいです。日付()getTime()); }、 1000)
スロットリング
例:ゲームでクールダウンは、あなたが押す回数に関係なくは、スキルが唯一の良いを冷却した後、再びトリガすることができます
関数スロットル(FN、時間){ canRunを聞かせ = 真。 戻り 関数(){ 場合(canRun){ fn.apply(この引数) canRun = 偽 のsetTimeout(関数(){ canRun = 真 }、時間) } } } window.onscroll =スロットル(関数(){ にconsole.log ( '触发:' + 新しい日付()getTime()); }、 1000)