在我的示例中,首先可以并行执行多个请求,在这些请求完成后,将发送另一个请求,并带有先前的结果,伪代码如下所示
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
发布于 2018-05-10 11:06:20
它不叫b/c,在源上没有可观测到的发射。若要创建on,如果可观察值为空,则可以使用defaultIfEmpty或toArray运算符。
const observables = [];
Rx.Observable.forkJoin(observables)
.defaultIfEmpty([]) // or .toArray()
.mergeMap(results => Rx.Observable.of(results.length))
.subscribe(console.log);https://stackoverflow.com/questions/50247784
复制相似问题