1. empty
立即完成的 observable 。
empty().subscribe(
next: () => ,
complete: () =>
)
// empty(); 空Observable
2. of
按顺序发出任意数量的值。(可发数字队列,对象,数组,和函数)
of(1, 2, 3, 4, 5).subscribe(res => );
of({ name: 'huang' }, [1, 2, 3], function eve() {
return 'eve';
}).subscribe(res => );
3. interval(定时器)
基于给定时间间隔发出数字序列。
interval(1000); // 0,1,2...
4. timer(延时器)
给定持续时间后,再按照指定间隔时间依次发出数字。
timer(1000, 2000); // 一秒后发出,之后每二秒发出
5. fromEvent
将事件转换成 observable 序列。(类似addeventlistener)
fromEvent(document, 'click').pipe;
6. from(类似of,更强大)
将数组、promise 或迭代器转换成 observable 。
- 对于数组和迭代器,所有包含的值都会被作为序列发出!
- 此操作符也可以用来将字符串作为字符的序列发出!
7. throw/throwError(配合retry, retryWhen, catchError)
在订阅上发出错误throwError('This is an error!').subscribe({
next: val => console.log(val),
complete: () => console.log('Complete!'),
error: val => console.log(`Error: ${val}`) // 处理错误
});
7.1 配合retryWhen使用
interval(1000).pipe(
map(val => {
if (val > 5) {
// 错误将由 retryWhen 接收
throw val;
}
return val;
}),
retryWhen(errors =>
errors.pipe(
// 输出错误信息
tap(val => console.log(`Value ${val} was too high!`)),
// 5秒后重启
delayWhen(val => timer(val * 1000))
)
)
);
*
create
使用给定的订阅函数来创建 observable 。fromPromise
创建由 promise 转换而来的 observable,并发出 promise 的结果。range
依次发出给定区间内的数字