Rxswift observable bind(to :) vs subscribe(onNext :)

Rxswift observable bind(to :) vs subscribe(onNext :),第1张

概述抱歉.我很困惑Rx swift中的绑定是什么.据我所知,除非观察者订阅了它,否则observable不会产生价值,例如myObservable.subscribe(onNext:{}). 但是,当我阅读以下代码行时: // in LoginViewModel.swiftinit() { isValid = Observable.combineLatest(username.asObser 抱歉.我很困惑Rx swift中的绑定是什么.据我所知,除非观察者订阅了它,否则observable不会产生价值,例如myObservable.subscribe(onNext:{}).
但是,当我阅读以下代码行时:
// in Loginviewmodel.swiftinit() {    isValID = Observable.combineLatest(username.asObservable(),password.asObservable()) { (username,password) in        return !username.isEmpty && !password.isEmpty    }}// in LoginVIEwController.swiftviewmodel.isValID.bind(to: loginbutton.rx.isEnabled).disposed(by: disposeBag)

我很困惑,为什么在不调用subscribe方法的情况下能够观察到isValID Observable?为什么我们可以在LoginVIEwController.swift中调用bind(to :)而不调用viewmodel.isValID.subscribe(…)之类的东西

看看bind(to :)的实现
public func bind<O: ObserverType>(to observer: O) -> disposable where O.E == E {    return self.subscribe(observer)}

订阅在里面调用.

关于你的陈述

As far as I kNow,observable won’t produce value unless a observer subscribed on it

这只适用于寒冷的观察者.让我引用这个site

When does an Observable begin emitting its sequence of items? It depends on the Observable. A “hot” Observable may begin emitting items as soon as it is created,and so any observer who later subscribes to that Observable may start observing the sequence somewhere in the mIDdle. A “cold” Observable,on the other hand,waits until an observer subscribes to it before it begins to emit items,and so such an observer is guaranteed to see the whole sequence from the beginning.

总结

以上是内存溢出为你收集整理的Rxswift observable bind(to :) vs subscribe(onNext :)全部内容,希望文章能够帮你解决Rxswift observable bind(to :) vs subscribe(onNext :)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1030946.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存