rx-swift - RxSwift 如何映射到一个 onComplete 事件
问题描述
我有一个BehaviorSubject<[Int]>
, 数组的长度一次增加一个。我希望有一个在将第一个元素添加到数组时Observable
发出一个completed
事件,并且我不关心之后会发生什么。怎么做?
解决方案
将您的订阅包装BehaviorSubject
成您自己的,当您更改内容时Observable
将调用它:onCompleted
BehaviorSubject
let array = BehaviorSubject<[Int]>(value: [])
var observable: Observable<Void> {
return Observable<Void>.create { observer in
// skip first element as BehaviorSubject repeats last value on subscription
array.skip(1).subscribe(onNext: { _ in
observer.onCompleted()
})
}
}
然后像这样使用它:
observable.subscribe(onCompleted: {
print("bump")
}).disposed(by: disposeBag)
array.onNext([1]) // now "bump" gets printed
array.onNext([1, 2])
推荐阅读
- html - 样式颜色/日期输入窗口
- sql - 解析函数:ROW_NUMBER( )
- php - 在 CLI 中启用了扩展但在 PHPinfo 中未启用
- javascript - 为什么 Google Hangouts 支持在最新的 Chrome 中不使用 Chrome 扩展程序共享桌面?
- html - 如何使用 django 小部件调整并结合模板类字符串和小部件属性字符串名称
- django - Django内联表单集多个模型
- excel - 如何在excel中减去两个日期和时间字段
- cocoa - 子类化 NSTextStorage 中断列表编辑
- java - UnsatisfiedDependencyException Spring MVC 项目上下文根问题
- kotlin - 用于开放层次结构的 Map 属性委托