次のようなしきい値を下回っている場合、データベースの値を増やすリンクがあります。
if (currentValue + 10 < maxValue)
{
$http({method: 'GET', url: 'api.increaseValue/10'}) ...
}
ただし、すばやくクリックすると、すべてのクリックに対して if 条件が渡され、値がしきい値を超える可能性のある一連のリクエストが同時に起動されます。これをエレガントに処理する方法はありますか?
次のようなしきい値を下回っている場合、データベースの値を増やすリンクがあります。
if (currentValue + 10 < maxValue)
{
$http({method: 'GET', url: 'api.increaseValue/10'}) ...
}
ただし、すばやくクリックすると、すべてのクリックに対して if 条件が渡され、値がしきい値を超える可能性のある一連のリクエストが同時に起動されます。これをエレガントに処理する方法はありますか?
この問題を処理するには、いくつかの方法があります。@praneetloke が既に述べたことに加えて、さらにいくつかのアイデアがあります。
関数の実行を遅らせるにはsetTimeout () を使用します。また、その関数が前回のクリックで現在実行されている場合に、その関数の実行を返す関数でグローバル フラグを使用します。次に、API 呼び出しが戻ったら、フラグをリセットして、その後のクリックで関数を呼び出せるようにします。
この提案は、インクリメントされる値が何を表しているかによっても異なります。ユーザーが高速クリックを無視しても大丈夫かどうかを判断する必要があります。彼らが意図的にそれを行っており、それを許可したくない場合は、おそらく、以前の要求が処理されており、再度クリックする前に待機する必要があることを示すフレンドリーなメッセージを表示する必要があります.
このアクションのコンテキストを提供し、この関数が他に何をしているかのコードをさらに表示すると、答えが改善される可能性があります。