Я начал изучать 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)
Как я могу избежать вложенности звонков по подписке? Из-за этого кода пахнет.





Я могу подтвердить, что вложенные подписки недопустимы.
Вы можете использовать оператор switchMap в pipe.
@IvanKaloyanov также предоставляется решение (используйте switchMap), так что это дает право на ответ.
Вы можете избежать вложенной подписки, используя 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)
Это считается комментарием