NotReactive 0.2.7

NotReactive 0.2.7

Shangxin Guo维护。



NotReactive

Language Version License Platform

所有那些响应式库都很酷,但它们可能过于复杂而难以正确实现。

使用方法

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 文件。