使用Angular 10我有以下方法:
private getUser() : Observable<Response> {
return this.authenticationService.getClaims('sub').pipe(map((claims: Claim[]) => {
let request: Request = { userId: 1 };
return this.userService.getByUserId(request).pipe(
map((payload: Payload<Response[]>) => payload.result[0])
);
}));
}
我收到错误消息:
Type 'Observable<Observable<Response>>' is not assignable to type 'Observable<Response>'.
如何解决呢?
创建一个内部Observable需要展平,这可以使用SwitchMap / MergeMap运算符来实现,如下所示:
private getUser() : Observable < Response > {
return this.authenticationService.getClaims('sub').pipe(
switchMap((claims: Claim[]) => {
let request: Request = { userId: 1 };
return this.userService.getByUserId(request).pipe(
map((payload: Payload<Response[]>) => payload.result[0])
);
}));
}
这是一篇有关了解RxJS映射,mergeMap,switchMap和concatMap的精彩文章
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句