RxJs ветвится если еще логика - PullRequest
       7

RxJs ветвится если еще логика

0 голосов
/ 19 сентября 2018
onSave() {
  // event handler 
  const save$ = combineLatest(this.configData.data, this.layerService.layerData)
    .pipe(
      filter(([configData]) => !_.isEmpty(configData)),
      take(1),
      tap(_ => this.loadingService.showLoading()),
      map(data => this.createSaveConfig(data)),
      flatMap(dataJSON => this.saveService.save(dataJSON)),
    ).share();

  const saveAndReload$ = save$.pipe(
    filter(_ => !this.savedId),
    pluck('savedId'),
    flatMap(savedId => this.saveService.getData(savedId)),
    tap(reportData => this.retrievedReport = reportData),
    pluck('savedId'),
    tap(savedId => {
      this.savedId = savedId;
      this.location.replaceState(`/notes/${this.savedId}`);
    })
  );

  save$.merge(saveAndReload$).subscribe(_ => {
    this.loadingService.hideLoading();
  }, err => this.errorService.error(err));

}

При первоначальном сохранении saveId не существует, и в этом случае выполняется специальная операция, которая изменяет URL с помощью saveId.И во время последующего сохранения будет присутствовать так, в этом случае нет необходимости изменять URL-адрес.Проблема с вышеупомянутым заключается в том, что во время первого сохранения метод подписки вызывается дважды.

...