RxSwift 如何更好地刷新 BehaviourSubject?
RxSwift how to refresh BehaviourSubject better way?
我有 BehaviourSubject,我想用最后发出的值刷新项目。我可以在下面做例子,
func refreshCurrent() {
do {
let items = try currentMatchList.value()
if !(items.first?.items ?? []).isEmpty {
refreshItems(sportId: try currentSport.value())
}
} catch {
LOG.error(error.localizedDescription)
return
}
}
但我想知道是否有任何内置的 RxSwift 功能可以用于相同的任务?
我发现曾经有一个 Variable()
类型,但现在它消失了,似乎建议使用 BehaviourSubject。
提前致谢。
不知道我是否理解正确,但您似乎想将值存储在 BehaviourSubject
.
中
let foo = BehaviourSubject<[Something]>(value: [])
print(foo.value) //Empty Array
foo.accept([Something(), Something()])
print(foo.value) //Array of two somethings
在官方 github 回购中搜索所有问题后,我发现了关于同一问题的长期讨论 here 并且它已关闭。
但是 好消息是 freak4pc 声明我们可以使用 RxCocoa class BehaviourRelay
并且它有一个直接的值访问方法
example("BehaviorRelay") {
let disposeBag = DisposeBag()
let subject = BehaviorRelay<String>(value: "")
print(subject.value)
subject.addObserver("1").disposed(by: disposeBag)
subject.accept("")
subject.accept("")
print(subject.value)
}
我有 BehaviourSubject,我想用最后发出的值刷新项目。我可以在下面做例子,
func refreshCurrent() {
do {
let items = try currentMatchList.value()
if !(items.first?.items ?? []).isEmpty {
refreshItems(sportId: try currentSport.value())
}
} catch {
LOG.error(error.localizedDescription)
return
}
}
但我想知道是否有任何内置的 RxSwift 功能可以用于相同的任务?
我发现曾经有一个 Variable()
类型,但现在它消失了,似乎建议使用 BehaviourSubject。
提前致谢。
不知道我是否理解正确,但您似乎想将值存储在 BehaviourSubject
.
let foo = BehaviourSubject<[Something]>(value: [])
print(foo.value) //Empty Array
foo.accept([Something(), Something()])
print(foo.value) //Array of two somethings
在官方 github 回购中搜索所有问题后,我发现了关于同一问题的长期讨论 here 并且它已关闭。
但是 好消息是 freak4pc 声明我们可以使用 RxCocoa class BehaviourRelay
并且它有一个直接的值访问方法
example("BehaviorRelay") {
let disposeBag = DisposeBag()
let subject = BehaviorRelay<String>(value: "")
print(subject.value)
subject.addObserver("1").disposed(by: disposeBag)
subject.accept("")
subject.accept("")
print(subject.value)
}