【问题标题】:Observable<Observable<T>> to Observable<T> rxswiftObservable<Observable<T>> 到 Observable<T> rxswift
【发布时间】:2021-07-23 10:17:11
【问题描述】:

您好,我很难弄清楚这一点。 还有一些其他问题。

谁能帮我把Observable&lt;[Observable&lt;CellModel&gt;]变成Observable&lt;[CellModel]&gt;?

request(categoryId: $0) 的结果是 Observable&lt;[Observable&lt;CellModel&gt;?]&gt;

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)

【问题讨论】:

    标签: swift rx-swift


    【解决方案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

    【讨论】:

    猜你喜欢
    • 2019-08-24
    • 1970-01-01
    • 1970-01-01
    • 2019-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-01
    • 2016-11-05
    相关资源
    最近更新 更多