概述
- 这是一个不太常用的操作符,很大一部分原因是有forkJoin操作符
- 用于数据的有系合并,功能类似Promice.all
- 可以多次返回数据,当每个流数据每次都返回一次数据就会产生一次订阅数据
事例
import { interval, zip } from 'rxjs';
import { delay, take } from 'rxjs/operators';
const source1 = interval(1000).pipe(
take(2)
);
const source2 = interval(1000).pipe(
delay(2000),take(10)
);
const source3 = interval(1000).pipe(
delay(3000), take(10)
);
zip(source1, source2, source3).subscribe(res => console.log(res)) // 3秒后输出 [0, 0, 0],4秒后输出 [1, 1, 1]
当每个流都拿到第一次数据时,zip返回第一次数据; 当每个流都拿到了第二次数据时,zip返回第二次数据; 因为不能每个都拿到第三次数据(source1拿不到),所以zip只2次数据返回
这里核心点,返回过数据次数点相同的情况下,就会返回一次数据,通俗点说zip返回数据次数由那个返回数据次数最少的流决定
文中如有错误,欢迎在评论区指正,如果这篇文章帮助到了你,欢迎点赞和关注
本文使用 mdnice 排版