首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Observable<Observable<T>>到Observable<T> rxswift

Observable<Observable<T>>到Observable<T> rxswift
EN

Stack Overflow用户
提问于 2021-07-23 18:17:12
回答 1查看 41关注 0票数 1

嗨,我很难弄清楚这件事。还有一些其他的问题。

有没有人能帮我把Observable<[Observable<CellModel>]变成Observable<[CellModel]>?

request(categoryId: $0)的结果是Observable<[Observable<CellModel>?]>

enter image description here

代码语言:javascript
复制
  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)
EN

回答 1

Stack Overflow用户

发布于 2021-07-23 20:02:58

这是你从request(categoryId:)返回的一个非常痛苦的类型。真正的解决之道就在那里。然而,这个问题的答案是:

代码语言:javascript
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68497638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档