创建操作符

适用操作符 功能需求
create 直接操作观察者
of 根据有限的数据产生同步数据流
range 产生一个数值范围内的数据
generate 以循环方式产生数据
repeat | repeatWhen 重复产生数据流中的数据
empty 产生空数据
throw 产生直接出错的数据流
never 产生永不完结的数据流
interval|timer 间隔给定时间持续产生数据
from 从数组等枚举类型数据产生数据流
fromPromise 从Promise对象产生数据流
fromEvent 从外部事件对象产生数据流
ajax 从Ajax请求结果产生数据流
defer 延迟产生数据流

repeat:重复数据的数据流

repeat是一个实例操作符,区别于静态操作符。
repeat的”重复功能”依赖于上游observable的完结时机。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
const source$ = Observable.create(observer=>{
setTimeout(() => observer.next(1), 1000);
setTimeout(() => observer.next(2), 2000);
setTimeout(() => observer.next(3), 3000);
setTimeout(() => observer.complete(), 4000);
})

const repeated$ = source$.repeat(2);

repeated$.subscribe(
console.log,
null,
() => console.log('completed');
)

123
如果要重复3次,observer.complete()是关键。

v4 vs v5

v4中repeat是一个静态操作符,接受两个参数,一个是需要重复的元素,另一个参数为重复的次数,功能很受限例如:
const $ = Rx.Observable.repeat(1,10);