题
我正在将使用RxJava的项目移植到RxSwift。有一个使用autoconnect()的ConnectableObservable。我如何将其移植到RxSwift?我正在寻找类似的功能或解决方法。
信息
我一直在寻找在RxSwift中使用refcount()的方法,但是一旦订阅者人数变为0,它将在autoconnect()将继续的地方停止。根据这些release notes,autoConnect的工作方式仅类似于refCount的前半部分,或更准确地说,它的行为与refCount()相似,不同之处在于,当订阅者丢失时,它不会断开连接。
最佳答案
我接受了@akamokd的建议,我只是创建了自己的建议。由于我只需要autoConnect(),所以非常简单。
extension ConnectableObservableType {
func autoconnect() -> Observable<E> {
return Observable.create { observer in
return self.do(onSubscribe: {
_ = self.connect()
}).subscribe { (event: Event<Self.E>) in
switch event {
case .next(let value):
observer.on(.next(value))
case .error(let error):
observer.on(.error(error))
case .completed:
observer.on(.completed)
}
}
}
}
}