首页 > 解决方案 > RxJs Zip 仅从发送的流中获取第一个值

问题描述

我使用RxJs Zip运算符有以下代码:

of(1, 2, 3)
  .pipe(zip(of(5), of(10)))
  .subscribe((a) => console.log(a));

输出将是

[1, 5, 10]

但是在 初始化的 2 和 3 值发生了什么of(1, 2, 3)

标签: rxjs

解决方案


内部的 observablesof(5)只有of(10)一个元素。静态方法zip()只会在所有 observable 发出相应的通知时发出。

例如。

of(1, 2, 3)
  .pipe(zip(of(5, 6, 7), of(10, 11, 12)))
  .subscribe((a) => console.log(a));

会发出

[1, 5, 10]
[2, 6, 11]
[3, 7, 12]

我还必须在这里强调静态方法zip()已被弃用,并且已被zip()函数取代。使用新zip()的等效于上述将是

import { of, zip } from 'rxjs';

zip(
  of(1, 2, 3), 
  of(5, 6, 7), 
  of(10, 11, 12)
).subscribe((a) => console.log(a));

推荐阅读