Observable<Observable<T>> 到 Observable<T> rxswift
Posted
技术标签:
【中文标题】Observable<Observable<T>> 到 Observable<T> rxswift【英文标题】:Observable<Observable<T>> to Observable<T> rxswift 【发布时间】:2021-07-23 10:17:11 【问题描述】:您好,我很难弄清楚这一点。 还有一些其他问题。
谁能帮我把Observable<[Observable<CellModel>]
变成Observable<[CellModel]>?
request(categoryId: $0)
的结果是 Observable<[Observable<CellModel>?]>
enter image description here
selectCategory
.do(onNext: _ in output.cells.onNext([.init(cellID: kSkeletonTableID)]) )
.flatMap [unowned self] in request(categoryId: $0)
// .showIndicator()
.trackError(errorTracker)
.compactMap
var cellModel:[CellModel] = $0.flatMap $0
return cellModel
.bind(to: output.cells)
.disposed(by: disposeBag)
【问题讨论】:
【参考方案1】:这是你从request(categoryId:)
返回的一个相当受折磨的类型。真正的解决办法就在那里。然而,这个问题的答案是:
selectCategory
.do(onNext: _ in output.cells.onNext([.init(cellID: kSkeletonTableID)]) )
.flatMap request(categoryId: $0).flatMap Observable.combineLatest($0.compactMap $0 )
// .showIndicator()
.trackError(errorTracker)
.bind(to: output.cells)
.disposed(by: disposeBag)
您可能需要根据预期输出考虑 flatMap 的其他变体之一。详情见这篇文章:RxSwift's Many Faces of FlatMap
【讨论】:
非常感谢您的回答!我知道返回值 Observable]> 不是最好的选择!关于这一点,你能回答我现在上传的另一个问题吗? ***.com/questions/68525265/…以上是关于Observable<Observable<T>> 到 Observable<T> rxswift的主要内容,如果未能解决你的问题,请参考以下文章
类型 'Observable<Object>' 不可分配给类型 'Observable<IUser[]>'
Observable<> 不可分配给类型 Observable<SomeType[]>
类型 'Observable<any>' 不可分配给类型 'Observable<T>'
如何组合多个 Observable 类型数组 Observable<T[]>?