0
私は、アクションを開始および停止(トグル)するためのボタンがあるとします。RxSwift:(完了した)ストリームを繰り返す
let toggleStream: Observable<Bool> = toggleBtn.rx.tap.scan(false) { state, _ in !state }
私は別のストリームを持っており、Integersを連続して出力します。
let emitter = Observable<Int>.interval(2.0, scheduler: timerScheduler)
ここで、トグルストリームを使用して、2番目のストリームの発光を開始および停止します。これは私のアプローチです:
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
の発光を開始します。また、作業を停止します。残念ながら、ストリームが完了したので、もう一度起動することはできません。ユーザーがボタンをもう一度切り替えると、再起動/再試行/繰り返しができますか?