在下面的代码中,订阅函数没有运行(控制台中没有出现'Never called');但是,调用了这三个服务。
ngOnInit(): void {
forkJoin([this.adminBCService.getAvailableBusinessCases(), this.explainersService.get(), this.adminPainsService.getMetricsList()])
.pipe(takeUntil(this.destroy$))
.subscribe(resultsArray => {
console.log(resultsArray);
this.businessCasesSelectable = resultsArray[0];
this.selectedBusinessCase = this.businessCasesSelectable.length ? this.businessCasesSelectable[0] : null;
this.explainers = resultsArray[1];
this.metricList = resultsArray[2];
});
}
我是RxJS和Angular的新手。在前三个完成后,我需要调用一个额外的服务,并计划在forkjoin的subscribe()函数中执行此操作,但我所做的一些事情似乎阻止了该函数做任何事情。
UPDATE:第三个服务调用有自己的订阅,所以它没有传递Observable。修改后,forkJoin成功地调用了订阅函数。
forkJoin
仅在每次时返回一个值可观察对象已经返回至少一个值并且已经完成。
这意味着:
- 一个服务呼叫失败
- 一个服务呼叫没有完成。
如果你不想等待一个完成,combineLatest
是一个很好的选择。
另一个边注:不要通过影响值tap
:map
来打破响应上下文,而不是在最终的subscribe
中设置类成员。