Для этого и для подобных вопросов вы хотите изложить все причины для выполнения этого вывода и сделать их входными данными для рассматриваемого потока.
Вы хотите, чтобы метод showHomeScene () вызывался при первомвызов завершается неудачно или когда второй вызов генерирует событие остановки.
private func getPropsForHomeScene() {
let currentUser = profileService.fetchCurrentUser()
.share(replay: 1)
let company = currentUser
.map { $0.company }
.flatMap { companyService.fetchCompany($0) }
let currentUserFailed = currentUser
.materialize()
.map { $0.error }
.filter { $0 != nil }
.map { _ in }
let companyStopped = company
.materialize()
.filter { $0.isStopEvent }
.map { _ in }
Observable.merge(currentUserFailed, companyStopped)
.subscribe(onNext: {
self.showHomeScene()
})
.disposed(by: disposeBag)
}
Я замечаю, что вы ничего не делаете с фактической компанией или текущими объектами пользователя, которые выбираются.Это не влияет на это subscribe
конечно, но я ожидаю, что вы захотите подписаться на currentUser
и company
, чтобы что-то с ними делать.В этом случае вы должны поместить share
в поток компании, как если бы он уже был в потоке currentUser.