是否有针对不同类型的Observable进行链接的解决方案?
我想要merge
Observable,当每个都发送Completed
事件时,发出下一个Observable(signal
)。
类似于ReactiveCocoa
的{{1}}。
then
答案 0 :(得分:2)
需要知道Element
的类型,因此您可以考虑以下几个选项:
Any
类型,Int
和String
都可以。{/ li>
Int
和String
,这可能会暴露您希望在其上使用的通用界面。enum
,其中包含Int
和String
的案例。以下是每个选项的实现:
Any
:let withAny = PublishSubject<Any>()
withAny.subscribe(onNext: { print($0) })
.addDisposableTo(disposeBag)
withAny.onNext(1)
withAny.onNext("a")
1
protocol
:protocol SomeProtocol {
// put whatever interface from the elements in here
}
extension String : SomeProtocol {}
extension Int : SomeProtocol {}
let withProtocol = PublishSubject<SomeProtocol>()
withProtocol.subscribe(onNext: { print($0) })
.addDisposableTo(disposeBag)
withProtocol.onNext(2)
withProtocol.onNext("b")
2
b
enum
:enum SomeEnum {
case int(Int)
case str(String)
}
let withEnum = PublishSubject<SomeEnum>()
withEnum.subscribe(onNext: { print($0) })
.addDisposableTo(disposeBag)
withEnum.onNext(.int(3))
withEnum.onNext(.str("c"))
INT(3)
str(&#34; c&#34;)
答案 1 :(得分:0)
我通过takeLast(1)
然后flatMap
将其实现为需要Observable。