Мне нужно подписаться на несколько наблюдаемых при запуске страницы, и мне нужно дождаться всех ответов перед запуском. Первое, что я увидел, это forkjoin, но он терпит неудачу, когда одна внутренняя наблюдаемая выдает ошибку, и я теряю значение других наблюдаемых.
Я сделал что-то подобное, и это работает … но я уверен, что есть способ получше:
getResult(){
let importantObservableResponse1
let importantObservableResponse2
let observableResponse3
let observableResponse4
return new Observable(obs => {
this.firstObservable().subscribe(
response => {
importantObservableResponse1 = response
if (importantObservableResponse2, observableResponse3, observableResponse4)
obs.next([importantObservableResponse1, importantObservableResponse2, observableResponse3, observableResponse4])
}, error => {
let error = this.makeError(error)
obs.error(error)
}
)
this.secondObservable().subscribe(
response => {
importantObservableResponse2 = response
if (importantObservableResponse1, observableResponse3, observableResponse4)
obs.next([importantObservableResponse1, importantObservableResponse2, observableResponse3, observableResponse4])
}, error => {
let error = this.makeError(error)
obs.error(error)
}
)
this.thirdObservable().subscribe(
response => {
observableResponse3 = response
if (importantObservableResponse1, importantObservableResponse2, observableResponse4)
obs.next([importantObservableResponse1, importantObservableResponse2, observableResponse3, observableResponse4])
}, error => {
observableResponse3 = error
if (importantObservableResponse1, importantObservableResponse2, observableResponse4)
obs.next(error)
}
)
this.fourthObservable().subscribe(
response => {
observableResponse4 = response
if (importantObservableResponse1, importantObservableResponse2, observableResponse3)
obs.next([importantObservableResponse1, importantObservableResponse2, observableResponse3, observableResponse4])
}, error => {
observableResponse4 = error
if (importantObservableResponse1, importantObservableResponse2, observableResponse3)
obs.next(error)
}
)
})
}
Я поместил всю свою подписку в наблюдаемое, и когда у меня есть вся информация.
Есть ли способ хотя бы получить все ответы сразу, даже если некоторые из них не работают?
