2017-04-18 91 views
0

假設我有可觀察的A,並且我試圖創建發現兩個事件的可觀察B:第一個當A發出事件,第二個5秒後。RxSwift:如何讓一個可觀察觸發另一個?

到目前爲止,我有以下幾點:

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

這工作,但我從一個封閉的感覺uncomforatble訂閱到A。有沒有更好的方法來做到這一點?

謝謝!

回答

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

相關問題