2017-10-13 13 views
1

私はObservable<Bool>を持っています。これは、操作が始まるとtrue、終了するとfalseが出ます。操作の進行中にメッセージを表示したいが、開始に2秒以上かかる場合にのみ表示する。メッセージを縛ることができるオブザーバブルを作成する方法はありますか?どんな助けも大変ありがとう!RXを使用して猶予時間を適用するにはどうすればよいですか?

答えて

2

あなたはこのような何か行うことができますが、switchMap(2番目の項目は、源から放出されたとき、元の観測可能にサブスクリプションが解除されflatMapと次へのサブスクリプションを移動)した場合:

  1. booleanObservableを
  2. .switchMap(2秒の観測可能なタイマーに真のマップ、空の観測可能に偽マップ)
  3. .onNextが空と 迅速な対応のために発生しません、次の(あなたのメッセージを表示するには、カットオフているだろう2秒タイマー)。

注意switchMapはRxSwiftで 'switchLatest'です。

booleanObservable 
    .map { inProgress -> Observable<Bool> in 
     if inProgress { 
      return Observable.just(true).delay(time: 2) 
     } else { 
      return Observable.just(false) 
     } 
    } 
    .switchLatest() 

はこのようなものになるだろう

関連する問題