将 Latest 与可观察数组结合起来
combineLatest with arrays of observables
如何将 combineLatest
与两个或多个可观察数组一起使用?
const array1 = [of(1), of(2)];
const array2 = [of(3), of(4)];
combineLatest(array1, array2)
.subscribe(([array1, array2]) => {
console.log(
`array1[0]: ${array1[0]}
array1[1]: ${array1[1]}
array2[0]: ${array2[0]}
array2[1]: ${array2[1]}`
);
});
我有一个 stackblitz:
https://stackblitz.com/edit/typescript-cnzvlo?file=index.ts&devtoolsheight=100
combineLatest
函数需要 Observable
(s) 的数组,而不是 Observable
.
的数组
那么你要做的是:
- 通过使用
concat
函数组合每个数组的内部 Observable
(s),将 Observable
的每个数组转换为 Observable
。
- 然后使用
toArray
运算符将每个结果转换为数组。
您可以执行以下操作:
import { combineLatest, of, concat } from 'rxjs';
import { toArray } from 'rxjs/operators';
const array1 = [of(1), of(2)];
const array2 = [of(3), of(4)];
combineLatest([
concat(...array1).pipe(toArray()),
concat(...array2).pipe(toArray()),
]).subscribe(([array1, array2]) => {
console.log(
`array1[0]: ${array1[0]}
array1[1]: ${array1[1]}
array2[0]: ${array2[0]}
array2[1]: ${array2[1]}`
);
});
这是 StackBlitz 的工作版本:
https://stackblitz.com/edit/typescript-3imea6?file=index.ts
如何将 combineLatest
与两个或多个可观察数组一起使用?
const array1 = [of(1), of(2)];
const array2 = [of(3), of(4)];
combineLatest(array1, array2)
.subscribe(([array1, array2]) => {
console.log(
`array1[0]: ${array1[0]}
array1[1]: ${array1[1]}
array2[0]: ${array2[0]}
array2[1]: ${array2[1]}`
);
});
我有一个 stackblitz: https://stackblitz.com/edit/typescript-cnzvlo?file=index.ts&devtoolsheight=100
combineLatest
函数需要 Observable
(s) 的数组,而不是 Observable
.
那么你要做的是:
- 通过使用
concat
函数组合每个数组的内部Observable
(s),将Observable
的每个数组转换为Observable
。 - 然后使用
toArray
运算符将每个结果转换为数组。
您可以执行以下操作:
import { combineLatest, of, concat } from 'rxjs';
import { toArray } from 'rxjs/operators';
const array1 = [of(1), of(2)];
const array2 = [of(3), of(4)];
combineLatest([
concat(...array1).pipe(toArray()),
concat(...array2).pipe(toArray()),
]).subscribe(([array1, array2]) => {
console.log(
`array1[0]: ${array1[0]}
array1[1]: ${array1[1]}
array2[0]: ${array2[0]}
array2[1]: ${array2[1]}`
);
});
这是 StackBlitz 的工作版本: https://stackblitz.com/edit/typescript-3imea6?file=index.ts