【问题标题】:RxSwift exit from observable chain if text is empty如果文本为空,RxSwift 退出可观察链
【发布时间】:2018-11-21 04:25:14
【问题描述】:

如果我没有必要的信息,我将无法理解提前退出可观察序列的方法。这是一个简化的例子......

@IBOutlet weak var myTextField: UITextField!
...
myButton.rx.tap. // stop here if textField is nil or empty
.flatMap { API.fetchMyList() }
.subscribe...

【问题讨论】:

  • 除非文本字段中至少有一个(可能是非空白)字符,否则您能否改为禁用按钮?

标签: swift rx-swift


【解决方案1】:

您需要转换您的可观察链以包含文本字段的内容,然后过滤掉您不感兴趣的值。运算符withLatestFrom 将从另一个可观察到的值拉入当前链。

@IBOutlet weak var myTextField: UITextField!

myButton.rx.tap
.withLatestFrom(myTextField.rx.text)
.filter { $0 != nil && $0?.isEmpty == false }
.flatMapLatest { // here $0 is the value of the text field
  API.fetchMyList($0) 
}
.subscribe...

附带说明一下,您可能希望使用 flatMapLatest 代替 flatMap,以便在再次点击按钮时取消旧请求。

【讨论】:

    猜你喜欢
    • 2018-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多