如何合并 String 和 Int 以获得一个 flatMap
How to merge String & Int to get in ONE flatMap
enum Input { case text(String); case page(Int) }
我正在使用关键字搜索 API 方法管理分页。
现在我可以传递关键字或页码,但不能在 Rx 中同时传递。
我在一些现有可用要点的帮助下编写了以下代码
let start = Observable.merge(reload, loadNext)
let stringObservable = keyword.asObservable().map { Input.text([=11=]) }
let intObservable = start.asObservable().map { Input.page([=11=]) }
let request_call = Observable.of(stringObservable, intObservable).merge()
let page = request_call
.flatMap { input in
Observable.combineLatest(Observable.just([=11=]), api.loadData(page: [=11=], keyword: "breaking")) { (pageNumber: [=11=], items: ) }
.materialize()
.filter { [=11=].isCompleted == false }
}
.share()
开始保留页码,关键字保留搜索关键字。
我需要合并两者,我确实使用了 ENUM & Merge,
现在我必须调用 API,但显示为输入
那么如何在一个 flatMap 中获取两个值
摆脱 Input
枚举并使用 combineLatest
而不是合并。
那么 request_call
将是一个 Observable<(String, Int)>
,您可以在 loadData
函数中使用这两个值。
let start = Observable.merge(reload, loadNext)
let stringObservable = keyword.asObservable()
let intObservable = start.asObservable()
let request_call = Observable.combineLatest(stringObservable, intObservable)
let page = request_call
.flatMap { text, page in
Observable.combineLatest(Observable.just(page), api.loadData(page: page, keyword: text)) { (pageNumber: [=10=], items: ) }
.materialize()
.filter { [=10=].isCompleted == false }
}
.share()
enum Input { case text(String); case page(Int) }
我正在使用关键字搜索 API 方法管理分页。 现在我可以传递关键字或页码,但不能在 Rx 中同时传递。
我在一些现有可用要点的帮助下编写了以下代码
let start = Observable.merge(reload, loadNext)
let stringObservable = keyword.asObservable().map { Input.text([=11=]) }
let intObservable = start.asObservable().map { Input.page([=11=]) }
let request_call = Observable.of(stringObservable, intObservable).merge()
let page = request_call
.flatMap { input in
Observable.combineLatest(Observable.just([=11=]), api.loadData(page: [=11=], keyword: "breaking")) { (pageNumber: [=11=], items: ) }
.materialize()
.filter { [=11=].isCompleted == false }
}
.share()
开始保留页码,关键字保留搜索关键字。
我需要合并两者,我确实使用了 ENUM & Merge,
现在我必须调用 API,但显示为输入
那么如何在一个 flatMap 中获取两个值
摆脱 Input
枚举并使用 combineLatest
而不是合并。
那么 request_call
将是一个 Observable<(String, Int)>
,您可以在 loadData
函数中使用这两个值。
let start = Observable.merge(reload, loadNext)
let stringObservable = keyword.asObservable()
let intObservable = start.asObservable()
let request_call = Observable.combineLatest(stringObservable, intObservable)
let page = request_call
.flatMap { text, page in
Observable.combineLatest(Observable.just(page), api.loadData(page: page, keyword: text)) { (pageNumber: [=10=], items: ) }
.materialize()
.filter { [=10=].isCompleted == false }
}
.share()