Вопросы

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

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

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

Читать:
Могу ли я использовать Q_PROPERTY или Q_INVOKE в классе, который не является производным от QObject?

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

Похожие записи

Группировать в текущую строку значения предыдущей группы с помощью Pyspark

admin

как указать python == 3.6.8 для оценщика PyTorch (conda_packages недостаточно)

admin

API-шлюз не возвращает ответ

admin

Пожалуйста, почему этот код печатается с дополнительным n, когда я его запускаю?

admin

phpMyAdmin показывает 404 Not Found (Ubuntu 18.04 Nginx)

admin

Что значит ‘?’ имеется ввиду в этом утверждении C ++?

admin