完成 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()))
我一直被一个问题困住了一段时间。我有一个 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()))