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 为空,您可以使用 defaultIfEmpty
或 toArray
运算符。
const observables = [];
Rx.Observable.forkJoin(observables)
.defaultIfEmpty([]) // or .toArray()
.mergeMap(results => Rx.Observable.of(results.length))
.subscribe(console.log);
在我的例子中,首先可以并行执行多个请求,在这些请求完成后,将发送另一个请求和先前的结果,伪代码如下所示
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 为空,您可以使用 defaultIfEmpty
或 toArray
运算符。
const observables = [];
Rx.Observable.forkJoin(observables)
.defaultIfEmpty([]) // or .toArray()
.mergeMap(results => Rx.Observable.of(results.length))
.subscribe(console.log);