如何在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
相关产品推荐
相关产品推荐

