首页 > 解决方案 > 如何在第二个 SwitchMap 中返回 2 个响应对象并在订阅方法中使用

问题描述

.pipe(
     switchMap(x => { return this.clientService.A(); }), 
     filter(firstResp => Helpers.IsNotNull(firstResp)),
     switchMap(firstRep => { return this.clientService.B(firstResp.someProp); }),
 ).subscribe( 

//Want to access response of both services in subscribe method.
 
);

第一个 SwitchMap 正在返回服务A 的响应,该响应将进入第二个 SwitchMap。在这个订阅方法中,我需要使用两个 swithMap 响应。我怎样才能做到这一点?

注意 -两种服务响应类型都是不同的。

标签: javascriptangularrxjstypescript-typings

解决方案


您可以嵌套管道:

.pipe(
    switchMap(x => this.clientService.A()),
    filter(firstResp => Helpers.IsNotNull(firstResp)),
    switchMap(firstRep => this.clientService.B(firstResp.someProp)
        .pipe(map(b => [firstRep, b]))),
 ).subscribe(([a, b]) => {
     // stuff
});

推荐阅读