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

fif*_*fth 1 rxjs rxjs5

在我的情况下,首先可以并行执行多个请求,这些请求完成后,将发送具有先前结果的另一个请求,伪代码看起来像

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 => {
  }
);
Run Code Online (Sandbox Code Playgroud)

如果为uploads$ = [],则内部的mergeMap永远不会被调用。

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

mku*_*lke 5

它不叫b / c,在源头上没有可观察到的发射。要创建一个,如果observables为空,则可以使用defaultIfEmpty或toArray运算符。

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