【发布时间】:2019-08-25 12:27:22
【问题描述】:
我的订阅取决于之前订阅的结果。 我正在使用 forkJoin,所以我不必嵌套它们:
this.service.service1().pipe(
flatMap((res1) => this.service.service2(res1))
).subscribe((res2) => {
// Do something with res2.
});
问题是我需要在调用订阅 #2 之前修改数据。我希望能够做这样的事情:
this.service.service1().pipe(
flatMap((res1) => {
// Modify res1 data here.
// Make 2nd Api Call
this.service.service2(res1)
})
).subscribe((res2) => {
// Do something with res2.
});
我是否需要不同的运算符/语法来实现这一点,或者我可以修改这种方法吗?
【问题讨论】:
-
您可以在
flatMap之前使用map以使其更明显,但如果您不想返回res1,我认为您现在正在做的很好。 -
@martin 上面的第二个代码块是不可能的。 flatMap 不允许使用 {}。它将抛出 Type 'void' is not assignable to type 'ObservableInput
' 错误。
标签: angular typescript rxjs subscription