RxJS:forkJoin合并映射

RxJS:forkJoin合并映射,rxjs,Rxjs,我试图发出多个http请求,并在一个对象中获取返回的数据 const pagesToFetch = [2,3] const request$ = forkJoin( from(pagesToFetch) .pipe( mergeMap(page => this.mockRemoteData(page)), ) ) mockRemoteData()返回一个简单的承诺。 在第一次可观察到的发射(从pagesToFetch请求$的第一个条目创建的一次)完成后,不

我试图发出多个http请求,并在一个对象中获取返回的数据

const pagesToFetch = [2,3]
const request$ = forkJoin(
  from(pagesToFetch)
    .pipe(
      mergeMap(page => this.mockRemoteData(page)),
    )
)
mockRemoteData()返回一个简单的承诺。
在第一次可观察到的发射(从pagesToFetch请求$的第一个条目创建的一次)完成后,不包括中的第二个值。如何解决此问题?

尝试以下示例格式

Observable.forkJoin(
   URL 1,
   URL 2
 ).subscribe((responses) => {
   console.log(responses[0]);
   console.log(responses[1]); 
 },
  error => {console.log(error)}
 );

您可以将
pagesToFetch
中的每个值转换为可观察值,然后等待它们全部完成:

const observables = pagesToFetch.map(page => this.mockRemoteData(page));

forkJoin(observables)
  .subscribe(...);
或者,如果不是那么简单,您需要
pagesToFetch
作为一个可观察对象来收集URL,您可以使用以下示例:

from(pagesToFetch)
  .pipe(
    toArray(),
    mergeMap(pages => {
      const observables = pages.map(page => this.mockRemoteData(page));
      return forkJoin(observables);
    }),
  )
  .subscribe(...);

没错,我去掉了mergeMap,它开始工作了,谢谢