2016-05-06 4 views
0

を完了した後にクリックし提出我々がやるしかRXJS Observablesの使用としたいと思います簡単な手順です:トリガー第二形式は、別の観測がここ

  1. クリックしてログインボタン(ユーザー名&パスワードを持つフォーム)。 Observable.fromEventは私たちのフォームにバインドされています。
  2. フォームを送信した後、loginUser()を呼び出します。これはサーバーにhttp要求を送信し、Observableを返します。
  3. HTTPリクエストが進行中の場合:ログインボタンをクリックすると、別のログイン要求が発生しません。
  4. HTTPリクエストが進行中でない場合:ログインボタンをクリックすると、別のログインリクエストがトリガーされます。

take(1)takeUntil()takeLast()は役に立たなかった。したがって、loginUser()が完了した後、ログインボタンを500msで5回クリックしてもう一度利用可能にすると、ログイン実行を停止する適切な方法は何ですか?

これはObservablesでのみ実行可能です。唯一の問題は前の文で説明した最後の部分です。

ありがとうございました!

答えて

2

flatMapFirstまたはexhaustMapは現在知られているとおりに使用できます。その背後にあるアイデアは、各クリックが新たなObservableを作成し、それが後で平坦化されるということです。 1つの進行中に新しいイベントが何も表示されなくなります。

Observable.fromEvent(submit, 'click') 
    .map(() => {}) // Login values 
    .exhaustMap(credentials => loginUser(credentials)) 
    .subscribe(x => console.log("Logged in!")); 
+0

完璧に機能しました!あなたの答えをありがとうございました。 – gregor

+0

大歓迎です! – paulpdaniels

関連する問題