Wie kann ich sicherstellen, dass ein Teilnehmer an einem Observable
das Ereignis onNext
nach einem anderen Abonnenten erhalten?RxSwift Shared Subscription Execution Order
Mein Beispiel ist die folgende:
let firstNameObservable = firstName.asObservable().shareReplay(1)
let lastNameObservable = lastName.asObservable().shareReplay(1)
let bioObservable = bio.asObservable().shareReplay(1)
let websiteObservable = website.asObservable().shareReplay(1)
firstNameObservable.subscribe(onNext: { [unowned self] firstName in self.accountDetails.firstName = firstName }).disposed(by: disposeBag)
lastNameObservable.subscribe(onNext: { [unowned self] lastName in self.accountDetails.lastName = lastName }).disposed(by: disposeBag)
bioObservable.subscribe(onNext: { [unowned self] bio in self.accountDetails.bio = bio }).disposed(by: disposeBag)
websiteObservable.subscribe(onNext: { [unowned self] website in self.accountDetails.website = website }).disposed(by: disposeBag)
Observable.combineLatest(firstNameObservable, lastNameObservable, bioObservable, websiteObservable)
{ [unowned self] _, _, _, _ in return self.accountDetails.validForSignUp }
.bind(to: isValid)
.disposed(by: disposeBag)
Ich würde für die letzten combineLatest
wie nach jedem der 4 subscriptions
auszulösen Bindung oben bereits ausgeführt hat. Dies liegt daran, dass die erst nach der Einstellung der Eigenschaften auf accountDetails
korrekt ist.
Ich bin mir bewusst, dass eine Lösung für dieses Problem wäre validForSignUp
eine Variable
und beobachten Sie es, aber nehmen wir an, dass das nicht möglich ist.
Ist 'isValid' eine' Variable'? Sie sollten Variablen und Themen möglichst vermeiden. –