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 */