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

如何在RxJS MergeMap的响应中识别对应请求的ID?

解决方案

要在订阅回调中获取每个响应对应的ID,只需在创建每个请求Observable时,将响应结果与对应的ID绑定即可,同时不会影响并行请求的发起:

完整代码示例

const requests = from(
  this.array.map((e) => {
    // 将API请求的响应与当前ID绑定
    return this.eventsService.acceptId(e.id).pipe(
      map(res => ({ id: e.id, response: res }))
    );
  })
).pipe(mergeMap(x => x));

requests.subscribe(
  (result) => {
    console.log(`ID ${result.id} 请求返回: ${result.response}`);
  }
);

关键说明

  • 在array.map中,每个API请求的Observable通过map操作符,将原始响应转换为包含id和response的对象,这样就能在订阅时关联到对应的请求ID。
  • mergeMap默认不限制并发数,会同时发起所有请求,满足你并行调用的需求;如果需要控制最大并发量,可以传入第二个参数,比如mergeMap(x => x, 3)表示同时最多发起3个请求。

内容的提问来源于stack exchange,提问作者A I G U A

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 09:15:31