RxSwift文档七(技巧)

2020-07-24  本文已影响0人  酒茶白开水

技巧

extension ObservableType where E: MaybeCool {

    public func coolElements()
        -> Observable<E> {
          return filter { e -> Bool in
              return e.isCool
          }
    }
}

不惜一切代价避免嵌套订阅调用。这是一种差的代码味道

textField.rx.text.subscribe(onNext: { text in
    performURLRequest(text).subscribe(onNext: { result in
        ...
    })
    .disposed(by: disposeBag)
})
.disposed(by: disposeBag)

chaining disposables的首选方式是使用操作符。

textField.rx.text
    .flatMapLatest { text in
        // 假设这不会失败并在主调度程序上返回结果,
        // 否则可以正确使用`catchError`和`observeOn(MainScheduler.instance)`
        
        return performURLRequest(text)
    }
    ...
    .disposed(by: disposeBag) // 只有一个最顶层的disposable
上一篇下一篇

猜你喜欢

热点阅读