rxjs,forkJoin(array).mergeMap(...),内部 mergeMap 永远不会被调用

rxjs, forkJoin(array).mergeMap(...), inner mergeMap never get called

在我的例子中,首先可以并行执行多个请求,在这些请求完成后,将发送另一个请求和先前的结果,伪代码如下所示

let uploads$ = [obs1$, obs2$, obs3$];
Observable.forkJoin(uploads$).mergeMap(
  res => {
    // never get called if uploads$ = []
    let data = someCalculation(res);
    return this.http.post('http://endpoint/api/resource', data);
  }
).subscribe(
  res => {
  }
);

如果 uploads$ = [],内部 mergeMap 从未被调用。

有人可以帮忙吗?我在 RxJS 5.4

它没有被调用 b/c source observable 上没有发射。要创建一个,如果 observables 为空,您可以使用 defaultIfEmptytoArray 运算符。

const observables = [];
Rx.Observable.forkJoin(observables)
  .defaultIfEmpty([]) // or .toArray()
  .mergeMap(results => Rx.Observable.of(results.length))
  .subscribe(console.log);