我正在将使用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)
                }

            }
        }
    }
}

10-08 05:56