Управление несколькими Rx Js Observables на компоненте - PullRequest
1 голос
/ 02 марта 2020

Ниже приведен фрагмент кода компонента в моем приложении, где я подписываюсь на несколько наблюдаемых и загружаю данные [вызов API] после получения значений соответственно.

  ngOnInit() {
    this.combinedObservable$ = combineLatest(
      this.service1.getStudentId(),
      this.service2.getTeacherId(),
      this.service3.getResultId(),
      this.service4.getReportId(),
      this.service5.getYearId(),
    ).subscribe(value => {
      this.studentId = value[0];
      this.teacherId = value[1];
      this.resultId = value[2];
      this.reportId = value[3];
      this.yearId = value[4];
      // Load Data for the page by making an api call
      this.loadData(value[0], value[1], value[2], value[3], value[4]);
    });
  }

  ngOnDestroy() {
    this.combinedObservable$.unsubscribe();
  }

CombineLatest работает для меня в этом сценарии Однако loadData вызывается несколько раз. Я полагаю, что это происходит из-за наблюдаемых, испускающих значения после их обновления. Начальные значения для [studentId, teacherId, resultId, reportId, yearId] из сервиса устанавливаются в 0, чтобы обслужить объединить последние.

Можно ли каким-либо образом вызвать метод LoadData [вызов API] после получения всех 5 значений [не intialvalues ​​0]? Что-то вроде onComplete?

1 Ответ

4 голосов
/ 02 марта 2020

repleace combineLatest с forkJoin, который будет ожидать завершения всех наблюдаемых перед выпуском.

...