如果没有其他逻辑,RxJs分支

时间:2018-09-19 18:25:28

标签: angular rxjs rxjs5

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时不存在,在这种情况下,将执行特定操作,该操作使用saveId更改了url。 并且在随后的saveId出现期间,因此在这种情况下无需更改url。 上面的问题是,在第一次保存订阅方法期间,调用了两次。

0 个答案:

没有答案