【发布时间】:2026-01-03 09:45:01
【问题描述】:
假设我有一个可用于启动和停止(切换)动作的按钮。
let toggleStream: Observable<Bool> = toggleBtn.rx.tap.scan(false) { state, _ in !state }
我有另一个流,它连续发出整数。
let emitter = Observable<Int>.interval(2.0, scheduler: timerScheduler)
现在我想使用切换流来启动和停止第二个流的发射。这是我的方法:
Observable.combineLatest(toggleStream, emitter) { shouldEmit, evt in
return (shouldEmit, evt)
}.takeWhile{ (shouldEmit, evt:Int) in
return shouldEmit == true
}.map {(_, evt) in
return evt
}
这是第一次很好用。我可以按下按钮,Observable 开始发射它的Ints。也停止工作。可悲的是,我无法再次启动它,因为流已完成。当用户再次切换按钮时,如何重新启动/重试/重复?
【问题讨论】:
标签: swift3 observable rx-swift reactivex rx-cocoa