使用 Observable 绑定 BehaviorRelay - RxSwift

Posted

技术标签:

【中文标题】使用 Observable 绑定 BehaviorRelay - RxSwift【英文标题】:Binding BehaviorRelay with Observable - RxSwift 【发布时间】:2019-04-19 08:12:54 【问题描述】:

我有如下代码。如何在不使用定时器订阅的情况下在一个链中实现它?我想将 'timerInterval' 附加到 'timer' 上,然后调用 subscribe。

var timerInterval: BehaviorRelay<String> = BehaviorRelay(value: "")

...

func doLogic() 
    let timer = Observable<Int>.interval(0.05, scheduler: MainScheduler.instance)

    timer.subscribe( [weak self] value in
            let doubleValue = Double(value.element ?? 0)
            let dividedValue = doubleValue / 20.0
            let text = String(format: "%.2f", dividedValue)
            self?.timerInterval.accept(text)
        ).disposed(by: disposeBag)

【问题讨论】:

【参考方案1】:

你会选择地图操作员。我不确定你为什么需要BehaviourRelay,但我会做一些更简单的事情:

let timer = Observable<Int>.interval(0.05, scheduler: MainScheduler.instance)

var timerInterval: Observable<String> 
   return timer.map  value -> String in
             let doubleValue = Double(value.element ?? 0)
             let dividedValue = doubleValue / 20.0
             let text = String(format: "%.2f", dividedValue)
             return text
          


【讨论】:

漂亮简洁! ☺️

以上是关于使用 Observable 绑定 BehaviorRelay - RxSwift的主要内容,如果未能解决你的问题,请参考以下文章

Angular *ngFor 使用异步管道绑定到 observable - 发生了啥?

获取与 Knockout 绑定的 observable 元素?

MVVM Light 绑定到 Observable 集合

RxSwift 和 MVVM:observable 在没有绑定的情况下无法执行

更新绑定的 Observable 集合的一个元素

在Angular2中将自定义指令绑定到Observable