I wrote small demo code as following. I made two PublishSubject of different types. as I change any, page triggers I need to get page trigger only when one changes, which of observable_page.
class ViewController: UIViewController {
func loadData(page: Int, keyword: String) -> Observable<[Int]> {
let _result = Observable.of([1,2,3,4])
return _result
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let observable_keyword = PublishSubject<String>()
let observable_page = PublishSubject<Int>()
let trigger_tap = PublishSubject<Void>()
let tapObservable = trigger_tap.debug("trigger_tap", trimOutput: true)
let stringObservable = observable_keyword.debug("stringObservable", trimOutput: true)
let pageObservable = observable_page.debug("pageObservable", trimOutput: true)
let request_call_trigger = Observable.combineLatest(tapObservable, pageObservable)
.debug("request_call_trigger", trimOutput: true)
let page = request_call_trigger
.withLatestFrom(stringObservable) { ($0, $1) }
.flatMap { ((_, _, page), keyword) in
Observable.combineLatest(Observable.just(page), self.loadData(page: page, keyword: keyword)) { (pageNumber: $0, movies: $1) }
.materialize()
.filter { $0.isCompleted == false }
}
.share()
observable_keyword.onNext("breaking bad")
observable_page.onNext(1)
trigger_tap.onNext(())
observable_keyword.onNext("orange is new black")
observable_keyword.onNext("orange")
}
let bag = DisposeBag()
}
I read some option, felt filter or ignore may work here, but as I need their value in next, so confused, how to apply it properly.