問題タブ [debouncing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - document.scroll のデバウンス関数
私の機能は、スクロールの動作が遅くなります
デバウンス関数 ( https://davidwalsh.name/javascript-debounce-function ) について読みましたが、残念ながら自分の関数で機能させることはできません。
関数にデバウンスを実装する方法を誰かに教えてもらえますか? 前もって感謝します!
javascript - jquery スクロール イベントのデバウンス
デバウンスについて一般的な質問があります。ページの異なる位置に 3 つのメニューがあり、スクロール時にウィンドウの上部から 85px の位置に到達すると固定されます。それらは、上に達すると重なるように層になっています。現在、それぞれに関数があり、可能な限り最適化しようとしています。私の読みでは、.offset.top の計算が非常に負担が大きいことを示しています。
私の質問は次のとおりです。私はそれを考えすぎていますか?この場合、デバウンスする必要がありますか? 私の解釈が正しければ、スクロール時に 3 つのオフセット計算が常に実行されます。誰でも最適化を提案したり、それが必要ない理由を別の方法で説明したりできますか?
ありがとうございました。
javascript - Lodash _.debounce と一意の引数バリアント用の個別のキュー
lodash のデバウンス機能とスロットル機能に本当に感謝しています。私はユースケースをよく理解していると信じており、それらを何十回も実装しています。
ただし、要件によっては、引数を持つ _.debounce 関数で重大でキャッチしにくいエラーが発生する可能性があります。それは次のとおりです。
debounceFn
引数を 1 つ受け取り、デバウンス間隔が 1000 ミリ秒のデバウンス関数が呼び出されたとします。
- 100ms:
debounceFn(1)
- 200ms:
debounceFn(2)
- 300ms:
debounceFn(2)
- 400ms:
debounceFn(1)
- 500ms:
debounceFn(1)
子関数は、最終的に引数 1 で呼び出します。これは、最後の値のみを気にするサイズ変更イベントには最適ですが、引数に応じて個別のデバウンス キューが必要な場合はどうでしょうか? つまり、プロセスが引数 1 で呼び出される代わりに、プロセスが引数 1 と引数 2 で呼び出されますが、1 回だけ呼び出されます (両方ともデバウンスされるため)。
拡張されたやや複雑な例として、以下の引数の組み合わせを考えてみましょう。組み合わせによって一意のキューが生成されます。
実際の出力:
a: lime b: kiwi
必要な出力 (最初の 2 つの出力の順序は反転できます)
a: apple b: banana
a: apple b: orange
a: lime b: kiwi
引数を受け入れる _.debounce に関する多くの SO の質問を見てきました。それはもはや興味深い質問ではありません。つまり、個別のデバウンス キューを作成するにはどうすればよいでしょうか。
Lodash _.debounce 関数、Lodash ライブラリ、および JavaScript ネイティブ機能を使用してこれを達成するエレガントな方法 (シンプルで読みやすいコード) は何ですか? おそらく、_.debounce と _.memoize の組み合わせ (_.debounce を _.memoize でラップしようとしましたが、memoize をさらに理解するために調査する必要があります)。それとも、引数を「ハッシュ」して、引数の組み合わせごとに新しい _.debounce キューを作成する関数でしょうか?
javascript - Angular で最新の非同期要求のみの応答を処理するためのパターンは?
デバウンスされた入力と応答の処理に関するバグを発見しました。
入力時にサーバーにクエリを実行する検索入力があります。300msに設定されたデバウンスを適用しました。ただし、次のような奇妙な動作が発生することがあります。
ユーザーは「ab」と入力し、300 ミリ秒待機し、最初の要求が解決される前に「c」と入力します。検索バーには「abc」と表示されますが、現在 2 つのネットワーク リクエストがあります。場合によっては、2 番目の要求 (「abc」) が最初に解決され、次に最初の要求 (「ab」) が解決され、結果リストが上書きされることがあります。したがって、ユーザーには「ab」の結果のリストが表示されますが、検索入力には「abc」が含まれています。
これは、デバウンス自体の問題ではなく、解決時に無視できるように「古い」プロミスを破棄する方法を見つける方法に沿っているようです。
たとえば、私が欲しいもの
- 種類
"ab"
- 送信リクエスト「ab」
- 種類
"c"
- 送信リクエスト「abc」
- "abc" は応答を返し、Promise の解決を処理します
- 「ab」は応答を返し、promise を無視します
Angular でこのようなことを行うための一般的なパターン/アプローチはありますか? よくある話題になりそうです。
例: 「作成された最新のプロミスのみを解決する」?
angular - angular 2で非同期バリデーターにデバウンス時間を追加するには?
これは私の Async Validator であり、デバウンス時間がありません。どうすれば追加できますか?
javascript - 角度変更時の複数呼び出しの削除 (デバウンス/タイマー/時間操作?)
html でデバウンスを使用できない状況があります。ng-model-option: {debounce:1000}
しかし、ディレクティブで関数 doCallback への繰り返しコールバックを削除し、1 秒で 1 つの呼び出しのみを行いたい
html:<input ng-change="vm.GetStuff">
角度指令:
this.doCallback() への不要な呼び出しを削除する簡単な方法があるかもしれません。
javascript - DRYアップモデル
input
人間から検索パラメーターを作成することを受け入れる小さな Web アプリがあります。検索を実行する関数ng-model-options
をデバウンスするために使用しています。ng-change
テーブルの列名の横に小さな矢印があり、ユーザーは並べ替えることができます (3 つのアイコン - up-down
、up
、およびdown
を使用して表示される sort_field と sort_order がありますng-class
) ; それらに変更を登録し、デバウンスを使用して少し遅れて検索を実行したいと思います。ng-model
問題は、特定のパラメーターをそれらのアイコンにバインドする方法がわからないことです。誰かがソート アイコンを叩いて、サーバーやブラウザをクラッシュさせたくありません。
私がやりたいのは、search_param
オブジェクトを監視し、オブジェクトが変更されたときはいつでも 500 ミリ秒後に検索を開始するように指示するページ上の 1 つの場所を用意することです。このようにして、ユーザーがそれらの編集を完了すると、入力フィールドまたはソート選択のいずれかが呼び出され、それらのパラメーターをエンドポイントに送信する関数がトリガーされます。
これを行うAngularJSの戦略は何ですか? 現在、すべての入力フィールドはsearch_param
オブジェクト内のフィールドにバインドされておりng-model-options
、変更時にデバウンスする必要があります。これは多くの繰り返されるコードです。
angularjs - angularでng-changeイベントをデバウンスします
angularでng-changeイベントをデバウンスする良い方法は何ですか? 私は ng-model オプションで利用可能なデバウンスについて知っていますが、ユーザーがこのデータを送信するオプションを持っているため、モデルが変更されたときにすぐにモデルを更新したいと考えています。モデルはデバウンスを待っていました。ng-change イベントまたはそれが呼び出す関数にデバウンサーを追加したいと考えています。私の要素のhtml
saveProg 関数をデバウンスして、入力された文字ごとに 1 回ではなく、1 秒ごとに 1 回実行するようにしたいと思います。私の機能は次のようになります
vhdl - エンコーダ デバウンス VHDL
練習のために、ロータリー エンコーダ ハードウェアを実行する VHDL コードを作成しようとしました。デバウンス、直交デコーダ、アップ/ダウン カウンタ コードでいっぱいでした。
残念ながら、テストベンチでシミュレーションを実行したときの結果は期待外れだったので、各ブロックを個別に解析する必要があると判断しました。デバウンス コードのために、シンボル ファイルを作成し、以下の回路を作成しました。
シミュレーションでテストベンチ信号をデバウンスしようとしているときに、結果がひどいことがわかったので、何かが欠けていると思います。
エンコーダ ブロックの VHDL コードは、次の場所にあります。
自分が何をしているのかについて限られた考えしか持っていなかったので、不要なロジックでいっぱいになる可能性があり、友人の一般的なデバウンスコードを取り、それを編集して特定のニーズに合わせようとしました。
追加のものが必要な場合は、喜んで提供します。かなり基本的なエラーのように感じますが、何らかの助けが必要です。
プロパティの切り替えを識別するのに役立つ場合に使用したテストベンチ コードを次に示します。