【发布时间】:2018-10-02 15:14:12
【问题描述】:
我有一个数字数组,我将每个数字转换为一个可观察的(在随机时间发出)
当所有 observable 都解决后,我会显示结果。
就像promise.all,所以我使用forkJoin。
let arr: Array<Number> = [1, 2, 3, 4, 5];
let d = from(arr).pipe(mergeMap(f => myPromise(f)), toArray());
const example = forkJoin(d);
const subscribe = example.subscribe(val => console.log(val));
这确实按预期工作,我确实看到了随机(最大)时间后的总体结果。
但是,重新阅读文档,这个 ^ 应该不起作用。
请注意,d 是 Observable <{}[]> 类型,因此它是数组的 Observable。
sources :SubscribableOrPromise 提供任意数量的 Observables 作为数组或作为参数直接传递给运算符。
但是在这里我没有传递一个数组。 (意思是,这个:forkJoin(...d) 不起作用)。
问题:
我是否错误地使用了 forkJoin?以及如何与文档解决?
【问题讨论】:
-
您正在将数组的 Observable 传递给 forkJoin,对吗? (d 是数组的 Observable)
-
@siva636 我正在传递一个可观察的数组 - 正如您在图像中看到的那样。但是文档并没有说它需要可观察的数组。他们说它需要一个数组(!)或单个单独的项目,即 a、b、c、d
-
Doc 说“任何数量的 OBSERVABLES 都可以作为数组提供......”。根据我的理解,这意味着 Observables 数组。
-
@siva636 对。但在我的示例中,没有 Observables 数组,而是 Observable of array。如图所示,
d是Observable<[]> -
d 是一个 Observable 数组,但该数组包含 Observables?
标签: javascript rxjs