如何使用 RxSwift 传递多个参数?

Posted

技术标签:

【中文标题】如何使用 RxSwift 传递多个参数?【英文标题】:How to pass multiple parameters with using RxSwift? 【发布时间】:2020-02-18 02:56:09 【问题描述】:

我用下面的代码来传递单个参数。

lazy var priceListData: Observable<FoodPrice> = 
        return self.foodNamesparams1.asObservable()
                   .flatMapLatest(ApiCallViewModel.foodList(_:))

但我不知道如何传递多个参数.. 如果我需要将foodNamesparams1foodNamesparams2 传递给ApiCallViewModel.foodList 我怎样才能用 RxSwift 做到这一点?

foodNamesparams1foodNamesparams2都是BehaviorRelay

【问题讨论】:

查看***.com/questions/34095592/… 这可能会有所帮助:medium.com/@danielt1263/… 【参考方案1】:

您很可能希望首先组合参数,最有可能通过combineLatestzip

这看起来像这样

Observable.combineLatest(
    foodNamesparams1.asObservable(),
    foodNamesparams2.asObservable()
  )
  .flatMapLatest(ApiCallViewModel.foodList)

CombineLatest 不会发出任何东西,除非两个组合的 observable 都至少发出一次 - 然后它将提交任何一个组合的 observable 的更新。

在此处查看组合部分 http://reactivex.io/documentation/operators.html#combining寻找最适合的组合方法

【讨论】:

哦!我得到了它!谢谢! :-)

以上是关于如何使用 RxSwift 传递多个参数?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 RxSwift 和 RxSwiftDataSources 将表视图与表示不同数据类型的多个部分绑定?

如何在MVVM架构中使用RxSwift发送参数来查看模型?

如何将多个驱动程序与 RxSwift 正确组合?

传递数据 MVVM 和 RxSwift

如何在 RxSwift 中使用 EventConvertible 创建客户观察者事件?

使用 rxSwift 中的 tableView 单元将数据从视图模型传递到视图控制器