使用 concatMap 合并来自两个服务的数据
Combine Data from two services using concatMap
我有两个服务,第一个服务的数据用于从第二个服务中检索数据。我无法从用于从第二个服务获取数据的第一个服务获取的数据中访问特定值。 Angular 不喜欢 'firstserviceResultsJson.indSsn'。但是我需要将该数据发送到第二个服务。任何想法如何将数据从第一个服务获取到第二个服务?
this.firstService(query).pipe(
.firstServiceMethod(query).pipe(
concatMap(firstServiceResultsJson => this.secondService.secondServiceMethod(firstServiceResultsJson.specificParameter))
)
.subscribe(combinedResults => (this.finalResultsToSendToView = combinedResults ));
确保 firstServiceMethod
returns 是正确的对象,以便您能够访问结果中的 属性。然后使用带有 resultSelector 的 concatMap
来输出外部和内部 observable 的结果。示例:
this.firstService
.firstServiceMethod(query)
.pipe(
concatMap(
firstServiceResultsJson =>
this.secondService.secondServiceMethod(firstServiceResultsJson.specificParameter),
(outer, inner) => [outer, inner]
)
)
.subscribe(
combinedResults => (this.finalResultsToSendToView = combinedResults)
);
Demo
我有两个服务,第一个服务的数据用于从第二个服务中检索数据。我无法从用于从第二个服务获取数据的第一个服务获取的数据中访问特定值。 Angular 不喜欢 'firstserviceResultsJson.indSsn'。但是我需要将该数据发送到第二个服务。任何想法如何将数据从第一个服务获取到第二个服务?
this.firstService(query).pipe(
.firstServiceMethod(query).pipe(
concatMap(firstServiceResultsJson => this.secondService.secondServiceMethod(firstServiceResultsJson.specificParameter))
)
.subscribe(combinedResults => (this.finalResultsToSendToView = combinedResults ));
确保 firstServiceMethod
returns 是正确的对象,以便您能够访问结果中的 属性。然后使用带有 resultSelector 的 concatMap
来输出外部和内部 observable 的结果。示例:
this.firstService
.firstServiceMethod(query)
.pipe(
concatMap(
firstServiceResultsJson =>
this.secondService.secondServiceMethod(firstServiceResultsJson.specificParameter),
(outer, inner) => [outer, inner]
)
)
.subscribe(
combinedResults => (this.finalResultsToSendToView = combinedResults)
);