title | excerpt | categories | tags | author_profile | sidebar | ||||
---|---|---|---|---|---|---|---|---|---|
RxSwift Tips |
总结 RxSwift 中的 Tips |
|
|
false |
|
- 始终努力对你的系统全部或者部分建模为纯函数,这些纯函数可以轻松测试,还可以用来修改操作符行为
- 当使用 Rx 的时候,首先尝试组合内建的操作符
- 如果经常使用操作符的组合,创建自己的便利操作符
e.g.
extension ObservableType where E: MaybeCool {
public func coolElements()
-> Observable<E> {
return filter { e -> Bool in
return e.isCool
}
}
}
- Rx 操作符尽可能保持一般性来适用多成场景,但是总有难以建模的边界情况,这是你可以创建自己的操作符,可以在自建的操作符中引用内建的操作符
- 始终使用操作符来撰写订阅
尽可能避免嵌套订阅,错误的例子如下
textField.rx.text.subscribe(onNext: { text in
performURLRequest(text).subscribe(onNext: { result in
...
})
.disposed(by: disposeBag)
})
.disposed(by: disposeBag)
优选使用操作符链接 disposable
textField.rx.text
.flatMapLatest { text in
// Assuming this doesn't fail and returns result on main scheduler,
// otherwise `catchError` and `observeOn(MainScheduler.instance)` can be used to
// correct this.
return performURLRequest(text)
}
...
.disposed(by: disposeBag) // only one top most disposable