RxSwift 订阅序列

Posted

技术标签:

【中文标题】RxSwift 订阅序列【英文标题】:RxSwift subscribe sequence 【发布时间】:2021-06-07 07:12:14 【问题描述】:

我有两个订阅者,订阅了一个名为 profileUpdatesBehaviorRelay 可观察类型。

通过发布我的数据,

Observables.shared.profileUpdates.accept(data)

在代码中的两点订阅(假设AB)通过,

Observables.shared.profileUpdates.subscribe(onNext: )

现在,我可以定义获取订阅数据的顺序还是严格依赖于库?

例如,在点A 之后点B,反之亦然。

【问题讨论】:

【参考方案1】:

没有记录的合同保证将调用订阅的订单。它们将按顺序调用,但订单未定义。

最好使用do 运算符:

profileUpdates
    .do(onNext:  value in
        // perform side effect
    )
    .subscribe(onNext:  value in
        // perform other side effect
    )
    .disposed(by: disposeBag)

但是,过度使用 do 运算符(以及与此相关的中继)是一种代码异味,这意味着您仍在进行命令式思考。

【讨论】:

以上是关于RxSwift 订阅序列的主要内容,如果未能解决你的问题,请参考以下文章

RxSwift之深入解析Observable序列的创建

RxSwift之深入解析场景特征序列的使用和底层实现

RxSwift高阶函数merge解读

RxSwift之深入解析特殊序列deallocating与deallocated的源码实现

如何在 RxSwift 中取消订阅 Observable?

如何使用 RxSwift 订阅数组更改?