如何从通用可观察对象订阅 PublishRelay?
How to subscribe to PublishRelay from generic observable?
科特林代码:
fun <T> Observable<T>.circuitBreaker(): Observable<T> {
val relay = PublishRelay.create<T>()
this.subscribe(relay)
return relay.toFlowable(BackpressureStrategy.LATEST).toObservable()
}
以上是我试图将其转换为 Swift 的 Kotlin 代码。但是,我遇到一个错误,提示 无法将类型 'PublishRelay' 的值转换为预期的参数类型 '(Event<_>) -> Void'
Swift代码:
extension Observable {
func circuitBreaker<T>() -> Observable<T> {
let relay = PublishRelay<T>()
self.subscribe(relay)
return relay.asObservable()
}
}
如有任何帮助,我们将不胜感激。
您无法将 Observable
绑定到 Relay
。见相关讨论 here.
我用下面的方法做到了:
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()
}
}
科特林代码:
fun <T> Observable<T>.circuitBreaker(): Observable<T> {
val relay = PublishRelay.create<T>()
this.subscribe(relay)
return relay.toFlowable(BackpressureStrategy.LATEST).toObservable()
}
以上是我试图将其转换为 Swift 的 Kotlin 代码。但是,我遇到一个错误,提示 无法将类型 'PublishRelay' 的值转换为预期的参数类型 '(Event<_>) -> Void'
Swift代码:
extension Observable {
func circuitBreaker<T>() -> Observable<T> {
let relay = PublishRelay<T>()
self.subscribe(relay)
return relay.asObservable()
}
}
如有任何帮助,我们将不胜感激。
您无法将 Observable
绑定到 Relay
。见相关讨论 here.
我用下面的方法做到了:
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()
}
}