Как обрабатывать несколько наблюдаемых, когда неважно, что некоторые из них не работают?

Мне нужно подписаться на несколько наблюдаемых при запуске страницы, и мне нужно дождаться всех ответов перед запуском. Первое, что я увидел, это 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) } ) }) }

Я поместил всю свою подписку в наблюдаемое, и когда у меня есть вся информация.

Есть ли способ хотя бы получить все ответы сразу, даже если некоторые из них не работают?

Источник: ledsshop.ru

Стиль жизни - Здоровье!