2017-06-10 15 views
0

を完成到達しますログインボタンを押してからFacebookのログインウィンドウを閉じると、rx.tapへの私の購読はonCompletedになります。そうすれば、もう一度ボタンをタップしようとすると何も起こりません。このケースをどのように扱うべきですか?どんな提案も役に立ちます。ボタンは、私はRxSwiftに初心者だと私は、ログインFacebookの機能を実装しようと、ここで私がやっているものだよ

loginButton.rx.tap 
    .flatMap({ (_) -> Observable<Void> in 
     throw NSError(domain: "", code: 0, userInfo: [:]) 
    }) 
    .catchError({ error -> Observable<Void> in 
     return Observable<Void>.just() 
    }) 
    .subscribe() 

あなたがcatchErrorブロックまたは他のブロックで似たようにObservable<Void>.just()を生成するとき、それは一度だけ発動すると、あなたがcompletedを受け取り、他に何も起こりません理由がある:あなたのチェーンの簡略化スキームさ

答えて

0

後で。私はあなたが持っているすべてのコードを例えばflatMapLatestに入れるようアドバイスします。結果コードは次のようになります。

loginButton.rx.tap 
    .flatMapLatest({ _ -> Observable<Void> in 
     return Observable<Void> 
      .just() 
      .flatMap({ (_) -> Observable<Void> in 
       throw NSError(domain: "", code: 0, userInfo: [:]) 
      }) 
      .catchError({ error -> Observable<Void> in 
       return Observable<Void>.just() 
      }) 
    }) 
    .subscribe() 

は、それが

P.S.を役に立てば幸いRxSwift開発チームメンバーのsimilar answerを確認してください

関連する問題