将 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