Rxjs 从嵌套concatMap返回不可见的平面值

Rxjs 从嵌套concatMap返回不可见的平面值,rxjs,rxjs5,Rxjs,Rxjs5,我的用例场景如下: 我有一些可观察到的链,在某个时刻,我需要从web服务中获取额外的信息,并基于已解析的信息,我希望继续链或通过抛出来阻止它 为了等待来自服务的信息,我使用concatMap(从流中发出的每个值都映射到服务返回的新的可观察值,我需要值,nit observable of value)。为了平齐所有内部可见光,所有可见光都包含在concatMap 以下代码运行良好: /* Begin of chain */ .concatMap<Type, Type>(

我的用例场景如下:
我有一些可观察到的链,在某个时刻,我需要从web服务中获取额外的信息,并基于已解析的信息,我希望继续链或通过抛出来阻止它

为了等待来自服务的信息,我使用
concatMap
(从流中发出的每个值都映射到服务返回的新的可观察值,我需要值,nit observable of value)。为了平齐所有内部可见光,所有可见光都包含在
concatMap

以下代码运行良好:

/* Begin of chain */
        .concatMap<Type, Type>((pld: Type) => {
            return this.appService.getInfo()
            .concatMap<string, Type>((info) => {
                if (someFailingCondition(info)) {
                    Observable.throw(`Failed`);
                }
                /* Pass-through operation */
                return Observable.of(pld);
            });
        })
/* Rest of chain */

但我想知道,在将观察值的内部序列浓缩到内部操作符序列中之后,是否还有其他方法可以将它们再次平铺到平铺值管道中?

您的代码已经非常简单,有时不可能将所有可观察值平铺在一个链中,您可以进一步简单地将其平铺到下面,我真的不需要concatAll

/* Begin of chain */
        .concatMap<Type, Type>((pld: Type) => {
            return this.appService.getInfo()
            .map<string, Type>((info) => {
                if (someFailingCondition(info)) {
                  throw(`Failed`);
                }
                /* Pass-through operation */
                return pld;
            })
        })
/* Rest of chain */
/*链的开头*/
.concatMap((pld:Type)=>{
返回此.appService.getInfo()
.map((信息)=>{
如果(某些故障条件(信息)){
抛出(`Failed`);
}
/*直通操作*/
返回pld;
})
})
/*链的其余部分*/
/* Begin of chain */
        .concatMap<Type, Type>((pld: Type) => {
            return this.appService.getInfo()
            .map<string, Type>((info) => {
                if (someFailingCondition(info)) {
                  throw(`Failed`);
                }
                /* Pass-through operation */
                return pld;
            })
        })
/* Rest of chain */