1. empty

立即完成的 observable 。

  1. empty().subscribe(
  2. next: () => ,
  3. complete: () =>
  4. )
  5. // empty(); 空Observable

2. of

按顺序发出任意数量的值。(可发数字队列,对象,数组,和函数)

  1. of(1, 2, 3, 4, 5).subscribe(res => );
  2. of({ name: 'huang' }, [1, 2, 3], function eve() {
  3. return 'eve';
  4. }).subscribe(res => );

3. interval(定时器)

基于给定时间间隔发出数字序列。

  1. interval(1000); // 0,1,2...

4. timer(延时器)

给定持续时间后,再按照指定间隔时间依次发出数字。

  1. timer(1000, 2000); // 一秒后发出,之后每二秒发出

5. fromEvent

将事件转换成 observable 序列。(类似addeventlistener)

  1. fromEvent(document, 'click').pipe;

6. from(类似of,更强大)

将数组、promise 或迭代器转换成 observable 。

  • 对于数组和迭代器,所有包含的值都会被作为序列发出!
  • 此操作符也可以用来将字符串作为字符的序列发出!

    7. throw/throwError(配合retry, retryWhen, catchError)

    在订阅上发出错误
    1. throwError('This is an error!').subscribe({
    2. next: val => console.log(val),
    3. complete: () => console.log('Complete!'),
    4. error: val => console.log(`Error: ${val}`) // 处理错误
    5. });
    image.png

    7.1 配合retryWhen使用

    1. interval(1000).pipe(
    2. map(val => {
    3. if (val > 5) {
    4. // 错误将由 retryWhen 接收
    5. throw val;
    6. }
    7. return val;
    8. }),
    9. retryWhen(errors =>
    10. errors.pipe(
    11. // 输出错误信息
    12. tap(val => console.log(`Value ${val} was too high!`)),
    13. // 5秒后重启
    14. delayWhen(val => timer(val * 1000))
    15. )
    16. )
    17. );

    *

    create

    使用给定的订阅函数来创建 observable 。

    fromPromise

    创建由 promise 转换而来的 observable,并发出 promise 的结果。

    range

    依次发出给定区间内的数字