完成 Observable 后调用另一个方法

Call Another Method After Completing An Observable

我一直被一个问题困住了一段时间。我有一个 API,它有一个名为 'actuals' 的端点和 return 一个 JSON 格式的表演(自定义对象)列表。由于其异步性质,我订阅了一个 Observable。还有另一种称为 calculateCosts 的方法依赖于此数据,因此我只想在可观察对象完成后才触发此方法。

我的组件的精简版:

export class ProjectDetailComponent implements OnInit
{
    performances: Performance[] = [];

    constructor(
        private activatedRoute: ActivatedRoute,
        private performanceService: PerformanceService
      ) { }

    ngOnInit(): void 
    {
      // Fetch data
      this.fetchPerformances();
    }

    fetchPerformances()
    {
      this.performanceService.getActuals().pipe(
        finalize(() => this.calculateCosts))
        .subscribe(data => {
          data.forEach(p =>
          {
            let performance = new Performance(
              p['timesheetCodeId'],
              p['firstName'],
              p['lastName'],
              p['timesheetCodeName'],
              p['actualHours']
          );
          
          this.performances.push(performance);
        })
      });
    }
  }

  calculateCosts()
  {
    console.log(this.performances);
  }
}


通过在 subscribe() 本身和 finalize() 中将性能数组记录到控制台,我已经能够确认 Observable 确实 return 有效数据。但是 calculateCosts 永远不会被解雇(应该记录性能)而且我不明白为什么。

谁能帮我指引正确的方向?

谢谢。

您没有在 observable 完成时调用该函数:

finalize(() => this.calculateCosts))

改为:

finalize(() => this.calculateCosts()))