如何从泛型observable订阅PublishRelay?

时间:2017-11-08 07:02:44

标签: generics rx-swift rx-cocoa rx-kotlin

Kotlin代码:

fun <T> Observable<T>.circuitBreaker(): Observable<T> {
  val relay = PublishRelay.create<T>()
  this.subscribe(relay)
  return relay.toFlowable(BackpressureStrategy.LATEST).toObservable()
}

上面是我正在尝试转换为Swift的Kotlin代码。但是,我正面临一个错误,说无法将'PublishRelay'类型的值转换为预期的参数类型'(事件&lt; _&gt;) - &gt;无效“

Swift代码:

extension Observable {
  func circuitBreaker<T>() -> Observable<T> {
    let relay = PublishRelay<T>()
    self.subscribe(relay)
    return relay.asObservable()
  }
}

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:0)

您无法将Observable绑定到Relay。请参阅相关讨论here

答案 1 :(得分:0)

我是在下面使用它做的:

extension Observable {
  func circuitBreaker<T>() -> Observable<T> {
    let relay = PublishSubject<T>()
    _ = self.subscribe { (event: Event<Element>) in
      if let event = event as? Event<T> { relay.on(event) }
    }
    return relay.asObservable()
  }
}