如果我没有必要的信息,我很难理解提前退出可观察序列的方法。这是一个简化的例子……
@IBOutlet weak var myTextField: UITextField!
...
myButton.rx.tap. // stop here if textField is nil or empty
.flatMap { API.fetchMyList() }
.subscribe...
最佳答案
您需要转换您的可观察链以包含文本字段的内容,然后过滤掉您不感兴趣的值。运算符 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,这样如果再次点击按钮,旧的请求就会被取消。
关于swift - 如果文本为空,RxSwift 退出可观察链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53385630/