RxSwift:如何让一个 observable 触发另一个?
Posted
技术标签:
【中文标题】RxSwift:如何让一个 observable 触发另一个?【英文标题】:RxSwift: how to have one observable trigger another one? 【发布时间】:2017-04-18 08:31:26 【问题描述】:假设我有可观察的A
,我正在尝试创建可观察的B
,它发出两个事件:第一个是A
发出一个事件,第二个是5 秒后。
到目前为止,我有以下内容:
self.B = Observable.create [unowned self] observer in
self.A.subscribe(onNext:
observer.onNext(0)
self.delay(5)
observer.onNext(1)
)
return Disposables.create()
这可行,但我觉得从闭包中订阅A
感到不舒服。有更好的方法吗?
谢谢!
【问题讨论】:
【参考方案1】:解决方案是为延迟的 observable 重用 a
observable。以下是执行此操作的代码以及概念证明。
let a = button.rx.tap.asObservable()
let delay = a.delay(5.0, scheduler: MainScheduler.instance)
let b = Observable.of(a, delay).merge()
b.subscribe(onNext:
print("foo")
).disposed(by: bag)
【讨论】:
我在上面为a
使用了一个hot observable。如果你的 a
是一个冷的 observable,你需要 share()
或 publish()
它。
像往常一样的惊人答案+1以上是关于RxSwift:如何让一个 observable 触发另一个?的主要内容,如果未能解决你的问题,请参考以下文章
如何检查 RXSwift 中的 observable 是不是为空?