【发布时间】:2019-02-07 16:11:58
【问题描述】:
我正在使用 Angular 5 和 rxjs。我正在拨打 2 次服务电话,其中一次取决于其他结果。我正在使用 flatMap 进行操作。在进行两个 api 调用之后,我还想进行一些操作。我正在使用 finalize 。我的代码如下所示:
this.myservice.api1(param1).pipe(takeUntil(this.destroyed$), finalize(() => {
//do something after both api calls are completed
},
flatMap((result1) => {
//do some operation and create object x(this.objx)
return this.myservice.api2(param1);
})
).subscribe((result2) => {
//do something based on result2 and this.objx
})
但是,finalize 块仅在第一次 API 调用后才被执行。使用一个 API 调用 finalize 正在执行,但使用 flatMap 它仅在第一次 API 调用后才执行。如果我弄错了什么,请告诉我。
【问题讨论】:
-
finalize将在this.myservice.api2(param1)之前调用,仅当this.myservice.api1(param1)错误或this.destroyed$发出时。