NotReactive
所有那些响应式库都很酷,但它们可能过于复杂而难以正确实现。
使用方法
值
Value
使用默认值初始化。订阅时,观察者立即接收到最新值。
let value = Value<Int>(0)
let disposable = value.observe().subscribe { print($0) }
value.val = 1
// prints:
// 0
// 1
发射器
Emitter
可以发送值或错误。发送错误不会终止观察。
let emitter = Emitter<Int>()
let disposable = emitter.observe().subscribeEvent { print($0) }
emitter.emit(0)
emitter.emit(SomeError)
// prints:
// .next(0)
// .failure(SomeError)
KVO
let disposable = view.observe(\.frame).subscribe { print($0) }
通知
let disposable = NotificationCenter.default.observe(someNotification).subscribe { print($0) }
用户界面控制
let button = UIButton()
let disposable = button.observe(.touchUpInside).subscribe { print("tap") }
// prints:
// tap
let textField = UITextField()
let disposable = textField.observe(.editingChanged, take: \.text).subscribe { print($0) }
// prints:
// textField.text
操作符
let value = Value<Int>(0)
let disposable = value.observe()
.ignoreLatest()
.map { $0 }
.flatMap { anotherObservation }
.distinct()
.throttle(seconds: 0.5)
.on(DispatchQueue.main)
.filterNil()
.filter { $0 > 0 }
.withOldValue()
.subscribe { print($0) } // or bind(to:at:)
any(a.observe(), b.observe(), c.observe())
.subscribe { print($0) }
安装
NotReactive 可通过 CocoaPods 获得。要安装它,只需将以下行添加到您的 Podfile 中
pod 'NotReactive'
许可协议
NotReactive 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。