0

目標: ユーザーがスライダーを動かすと、スライダーの値がサーバーに送信されて値 X が計算され、スライダーの横に表示され、スライダーの値が変化すると徐々に更新されます。

私がしたこと: スロットルされた件名を使用switchMapして、値をフェッチしました:

sliderMoved$.pipe(
    throttleTime(200),
    switchMap(sliderVal => server.calculateX(sliderVal)
)

それは仕事をしますが、

問題: サーバーがスロットル時間より長く応答する場合、switchMap オペレーターは前の呼び出しをキャンセルします。したがって、スライダーの動きが遅いと一連のリクエストがキャンセルされ、値はユーザーがスライドを停止したときにのみ更新されます。

改善が必要:サーバー呼び出しごとに、応答が来るまで待機し、表示された値 X を更新してから、スライダーの最新の値で新しい呼び出しを開始する必要があります。保留中のリクエストがあったときにユーザーがスライドを停止した場合、最新のスライダー値を持つ最後の 1 つのリクエストを行う必要があります。

(または、それがどのように機能するかについてより良い考えがある場合)

4

0 に答える 0