我对某些变量使用了BehaviourRelay
。我将withLatestFrom
用于其中之一。但是withLatestFrom
没有返回我绑定的最新值。
如果我使用combineLatest
。它可以工作,但我想知道为什么带有withLatestFrom
的代码不起作用
let dueDate = BehaviorRelay<Date?>(value: nil)
let numberScheduleDays = BehaviorRelay<Int>(value: 1)
let selectedPaymentDate = BehaviorRelay<Date?>(value: nil)
dueDate.asObservable()
.distinctUntilChanged()
.flatMap { Observable.from(optional: $0) }
.map { self.addDaysForDate(days: 1, date: $0) }
.bind(to: selectedPaymentDate)
.disposed(by: disposeBag)
selectedPaymentDate.asObservable()
.distinctUntilChanged()
.withLatestFrom(dueDate.asObservable()) { (selectedDate: $0, dueDate: $1) }
.map { self.daysBetweenDates(startDate: $0.dueDate, endDate: $0.selectedDate) }
.bind(to: numberScheduleDays)
.disposed(by: disposeBag)
dueDate.accept(Date())
在第一块selectedPaymentDate.value = Date() + 1
之后
但是在第二块中,dueDate
仍然发出nil
值。我想知道为什么它的值不是Date()
答案 0 :(得分:0)
OptionUser::lists('user_skill');
假定两个可观察的序列具有不同的来源,并且它们不会同时触发(就像您的情况,它们具有相同的来源)。
如果两个可观察序列同时触发,则可以使用单个序列来解决。
有关更多信息,请阅读: