在我的情况下,首先可以并行执行多个请求,这些请求完成后,将发送具有先前结果的另一个请求,伪代码看起来像
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
它不叫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)
| 归档时间: |
|
| 查看次数: |
2699 次 |
| 最近记录: |