【发布时间】:2021-12-24 04:11:12
【问题描述】:
我已经被一个问题困住了一段时间了。我有一个 API,它有一个名为“actuals”的端点,并以 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 确实返回了有效数据。但是,calculateCosts 永远不会被解雇(应该记录性能),我不明白为什么。
谁能帮我指引正确的方向?
谢谢。
【问题讨论】: