首页 > 解决方案 > 如何从 RxJs 中的 flatMap 返回附加值

问题描述

我需要从下面的设置中返回一个除 Observable 之外的附加值,key字符串:flatMap

this.subscribeInit = this.tradingService.getInProgress()
.pipe(flatMap((s) => {
    this.keys = s.map((tdi) => tdi.key);
    return this.keys;
}),
flatMap((key) =>{
    var res = this.tradingService.getTradingData(key);//returns `Observable<any>`
    return res;
}))
.subscribe(res => {
    console.log('Key is : ' + res.key);
}, 
undefined,
() => this.onComplete());

就像是:

flatMap((key) =>{
    var res = this.tradingService.getTradingData(key);
    return {res,key};
}))

如何做到这一点?

标签: javascriptangularrxjs

解决方案


只需使用地图...

flatMap((key) =>{
    return this.tradingService.getTradingData(key).pipe(map((res) => {
        return {res,key};
    }));
}))

ps:我有点困惑:不是 flatMap 已弃用并替换了我的 mergeMap、switchMap、...?

编辑:显然问题是由使用 flatMap 而不是 mergeMap 引起的。


推荐阅读