RXJS Operators

PIPE的用途不多说,主要记录一下相关的Operators
在这里插入图片描述

pipe含有的100多种Operator

Observable.pipe(
    map(x => x + 1)
).subscribe(
    next => {
        console.log('value=', value); 
});

interval 每秒发出自增数字

import { interval } from 'rxjs';

// 每1秒发出数字序列中的值
const source = interval(1000);

of 发出数字序列

import { of } from 'rxjs';
// 依次发出提供的任意数量的值
const source = of(1, 2, 3, 4, 5);

range 发出1-10的区间值

import { range } from 'rxjs';

// 依次发出1-10
const source = range(1, 10);
// 输出: 1,2,3,4,5,6,7,8,9,10
const example = source.subscribe(val => console.log(val));

create 发出多个值的 observable

const hello = Observable.create(function(observer) {
  observer.next('Hello');
  observer.next('World');
});

// 输出: 'Hello'...'World'
const subscribe = hello.subscribe(val => console.log(val));

将数组、promise 或迭代器转换成 observable 。
💡 对于数组和迭代器,所有包含的值都会被作为序列发出!
💡 此操作符也可以用来将字符串作为字符的序列发出!

const arraySource = from([1, 2, 3, 4, 5]);
// 输出: 1,2,3,4,5
const subscribe = arraySource.subscribe(val => console.log(val));


// 发出 promise 的结果
const promiseSource = from(new Promise(resolve => resolve('Hello World!')));
// 输出: 'Hello World'
const subscribe = promiseSource.subscribe(val => console.log(val));

filter 过滤出偶数

import { from } from 'rxjs';
import { filter } from 'rxjs/operators';

// 发出 (1,2,3,4,5)
const source = from([1, 2, 3, 4, 5]);
// 过滤掉奇数
const example = source.pipe(filter(num => num % 2 === 0));
// 输出: "Even number: 2", "Even number: 4"
const subscribe = example.subscribe(val => console.log(`Even number: ${val}`));

concatAll

处理完前一个Observable才会再处理下一个Observable。依次按顺序执行一个个observable。如上面4秒后拿concat0,第5秒concat1,第6秒concat2;第10秒后concat0,第11秒concat1,第12秒concat2

mergeAll

能够同时并行处理所有的Observable,如上会根据两次点后各个Observable输出时间依次输出对应数据,像是几个接口请求一样,不管你是何是发出的,只管谁最先请求到数据,谁就先输出对应该数据,就这样依次输出直最后一个请求成功输出最后数据

switchAll

新的Observable输出后直接处理新的observable,不管前一个Observable是否完成,只要有新的Observable送出就会直接把旧的Observable退订(unsubscribe),永远只处理最新的Observable。如上面连点两次,第一次点击Observable要4秒后才输出出来,此时第二次点击早就有了新的Observable,所有会取消第一次订阅,只4秒后输出第二点击的数据

  • zip- love birds ,始终作为一个团队工作,仅在所有可观测值返回新值时触发 CombineLatest - go dutch

  • 一旦所有可观察到的值都返回新值,就开始触发,然后等不及,每次当任一可观察到的值都返回新值时触发。

  • withLatestFrom- master slave ,主服务器首先等待从服务器,此后,仅当主服务器返回新值时,才会触发操作。

  • forkJoin- final destination ,当所有可观测值完成时触发一次。
    具体得生动得讲解 https://blog.csdn.net/culiu9261/article/details/107542887

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值