2017-04-18 7 views
0

私はAを観測し、観測可能なBを作成しようとしていますが、最初にAがイベントを送出し、5秒後に2つのイベントを送出します。RxSwift:観察可能なトリガーをもう1つトリガーする方法は?

は、これまでのところ私は、次があります。

self.B = Observable.create { [unowned self] observer in 
      self.A.subscribe(onNext: { 
       observer.onNext(0) 
       self.delay(5) { 
        observer.onNext(1) 
       } 
      }) 
      return Disposables.create() 
     } 

これは動作しますが、私は閉鎖からAにuncomforatbleサブスクライブを感じます。それを行うためのより良い方法がありますか?

ありがとうございます!

答えて

1

解決策は、遅れて観察可能であることがわかるように、aを再利用することです。以下は、それを行うためのコードと概念証明です。

let a = button.rx.tap.asObservable() 
let delay = a.delay(5.0, scheduler: MainScheduler.instance) 
let b = Observable.of(a, delay).merge() 

b.subscribe(onNext: { 
    print("foo") 
}).disposed(by: bag) 
+0

私は上記の「a」に対して熱い観察可能性を使用しています。あなたの 'a'が冷たい観察可能なものなら、' share() 'または' publish() 'する必要があります。 –

+0

は単に動作します、ありがとう! – Yotam

関連する問題