You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RxJS学习疑问:如何用mergeMap拼接两个Observable的结果?

RxJS mergeMap 实现Observable值拼接的正确方式

你遇到的问题核心是:list2是Observable对象,不是它实际发出的值,直接用item + list2本质是把数字和对象做字符串拼接,自然会得到[object Object]这类错误结果。

正确的做法是在mergeMap的回调里,对list2的每个值做处理,和当前list1的item拼接:

import { of } from 'rxjs';
import { mergeMap, map } from 'rxjs/operators';

let list1 = of(1, 2);
let list2 = of('A', 'B');

list1.pipe(
  mergeMap(item => 
    // 遍历list2的每个值,和当前item拼接
    list2.pipe(map(char => `${item}${char}`))
  )
).subscribe(res => console.log(res));

执行后会依次输出:1A、1B、2A、2B,完全符合你的需求。

原理说明:

  • mergeMap会订阅list1发出的每个item,然后返回一个新的Observable
  • 这个新Observable由list2通过map转换而来,把每个字符和当前item拼接成目标字符串
  • mergeMap会自动合并所有这些子Observable的输出,最终按顺序发出拼接后的结果

内容的提问来源于stack exchange,提问作者Samit Sinha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 17:30:48