Angular 如何返回父级可观察值?

Angular 如何返回父级可观察值?,angular,rxjs,Angular,Rxjs,我正在尝试使用mergeMap嵌套一些http请求。 我使用的API以部分(页面)的形式返回数据,因此我需要根据总页面数发出更多请求 因为我需要请求知道有多少页。我总是在第一页写第一个。根据这个结果,我可以知道有多少页,并开始提出其他请求(从第2页开始) 一旦我订阅了返回的observable,我就获得了mergeMap中所有请求的数据,除了第一个请求的结果(page=1的请求) 是否有方法返回第一个请求数据 我试图用page=1启动内部请求,但我不喜欢这样,因为我已经有了该请求的数据 这是函数

我正在尝试使用mergeMap嵌套一些http请求。 我使用的API以部分(页面)的形式返回数据,因此我需要根据总页面数发出更多请求

因为我需要请求知道有多少页。我总是在第一页写第一个。根据这个结果,我可以知道有多少页,并开始提出其他请求(从第2页开始)

一旦我订阅了返回的observable,我就获得了mergeMap中所有请求的数据,除了第一个请求的结果(page=1的请求)

是否有方法返回第一个请求数据

我试图用page=1启动内部请求,但我不喜欢这样,因为我已经有了该请求的数据

这是函数的返回值:

返回此.getScrobblesFromAPI(用户名,oneWeekAgoUnix,1)
.烟斗(
合并映射(数据=>{
const totalPages:number=parseInt(数据['recenttracks']['@attr'].totalPages,10);
常量页:编号[]=[];
//从第2页开始
对于(设i=2;i this.getScrobblesFromAPI(用户名,oneWeekAgoUnix,第页)),
);
}),
地图(数据=>data['recenttracks']['track'].slice(1))
);
此函数返回http.get()的可观察值(HttpClient)

private getScrobblesFromAPI(用户名:字符串,发件人:编号,页码:编号){
//http:HttpClient
返回此.http.get('url¶ms');
} 

我可以想出两种方法来解决这个问题:

  • 创建一个空数组并将所有数据推送到其中。在外部管道的末尾,返回该数组,以便它进入subscribe回调
  • 只需使用concat函数将来自第一次调用的数据与其他可观察对象进行concat,这些可观察对象将检索剩余页面

    return concat(
        of(data), 
        from(pages).pipe(
          mergeMap( page => this.getScrobblesFromAPI(userName, oneWeekAgoUnix, page)),
        )
    );
    

  • 我尝试了第二个选项,但显然不能在合并映射中返回concat。您需要
    从'rxjs'导入{concat}
    ,而不是
    从'rxjs/operators'导入{concat}
    !非常感谢。成功了。“rxjs/operators”中的一个与“rxjs”中的一个有什么区别?