为啥 withLatestFrom 不返回最新值?
Posted
技术标签:
【中文标题】为啥 withLatestFrom 不返回最新值?【英文标题】:Why withLatestFrom don't return latest value?为什么 withLatestFrom 不返回最新值? 【发布时间】:2019-01-17 00:35:34 【问题描述】:我使用一些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()
【问题讨论】:
【参考方案1】:withLatestFrom
假设两个可观察序列具有不同的来源,并且它们不会同时触发(就像您的情况一样,它们具有相同的来源)。
如果两个可观察序列同时触发,则可以使用单个序列来解决它们。
更多信息请阅读:
withLatestFrom doesn't actually provide latest value
【讨论】:
以上是关于为啥 withLatestFrom 不返回最新值?的主要内容,如果未能解决你的问题,请参考以下文章