[英]Nesting subscribe calls in RxSwift
我已經開始學習RxSwift,但無法理解一些時刻。 我必須在執行請求后創建一個按鈕。 像這樣:
textField.rx.text
.flatMapLatest { text in
return performURLRequest(text)
}
.subscribe(onNext: { request in
// Create a button
let button = UIButton()
button.rx.tap
.subscribe({ _ in
// Action
}).disposed(by: self.disposeBag)
self.view.addSubview(button)
})
.disposed(by: disposeBag)
如何避免嵌套訂閱調用? 因為這個代碼味道。
您可以使用flatMap
避免嵌套訂閱,例如(orEmpty是可選的)
textField.rx.text.orEmpty
.flatMapLatest { text in
return performURLRequest(text)
}
.flatMap { request -> Observable<Void> in
// Create a button
let button = UIButton()
self.view.addSubview(button)
return button.rx.tap.asObservable()
}
.subscribe({ _ in
// Action
}).disposed(by: self.disposeBag)
我可以確認嵌套訂閱是禁止的。
您可以在pipe
使用switchMap
運算符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.