30 天精通 RxJS 笔记4

文章目录

Observable Operator

  • skip:可以略过前几个送出的元素,但是原本元素的等待时间仍然存在
  • takeLast:必须等到整个observable完成(complete),才能知道最后的元素有哪些,并且同步送出
  • last:takeLast(1)的简化写法,那就是last()用来取得最后一个元素。
  • concat:把多个observable 实例合并成一个,必须先等前一个observable完成(complete),才会继续下一个
  • startWith:可以在observable的一开始塞要发送的元素,值是一开始就同步发出的,这个operator 很常被用来保存程式的起始状态!
  • merge:把多个observable同时处理,跟concat一次处理一个observable是完全不一样的
  • combineLatest:会取得各个observable 最后送出的值,再输出成一个值
  • zip:取每个observable 相同顺位的元素并传入callback
  • withLatestFrom:他有主从的关系,只有在主要的observable 送出新的值时,才会执行callback
  • scan:是Observable 版本的reduce 只是命名不同。跟reduce 最大的差别就在scan 一定会回传一个observable 实例,而reduce 最后回传的值有可能是任何类型,必须看使用者传入的callback 才能决定reduce 最后的返回值。
  • buffer:要传入一个observable(source2),它会把原本的observable (source)送出的元素缓存在阵列中,等到传入的observable(source2) 送出元素时,就会触发把缓存的元素送出。
var source = interval(300);
var source2 = interval(1000);
var example = source.pipe(buffer(source2));
// [0,1,2]
// [3,4,5]
// [6,7,8]
// [9, 10, 11, 12]
// [13, 14, 15]
// [16, 17, 18]
// [19, 20, 21, 22]...
  • bufferCount:用数量来做缓存
  • bufferTime:用时间来做缓存
  • delay:可以延迟observable 一开始发送元素的时间点
  • delayWhen:跟delay 很像,最大的差别是delayWhen 可以影响每个元素,而且需要传一个callback 并回传一个observable
  • debounceTime:每次收到元素,他会先把元素cache住并等待一段时间,如果这段时间内已经没有收到任何元素,则把元素送出;如果这段时间内又收到新的元素,则会把原本cache住的元素释放掉并重新计时,不断反覆。
  • throttleTime:跟debounce 的不同是throttle 会先开放送出元素,等到有元素被送出就会沉默一段时间,等到时间过了又会开放发送元素
  • distinct:只要有重复出现的值就会被过滤掉。可以传入第二个参数flushes observable 用来清除暂存的资料。
  • distinctUntilChanged:只会跟最近一次送出的元素比较,不会每个都比
  • catch:处理错误,能接收第二个参数,这个参数会接收当前的observalbe,我们可以回传当前的observable 来做到重新执行
  • retry:重新尝试,可以限定次数。
  • retryWhen:传入一个callback,通常被用作错误通知。
  • repeat:重复订阅,可以限定次数。
  • concatAll:他会处理完前一个observable 才会在处理下一个observable
  • switch:在新的observable送出后直接处理新的observable不管前一个observable是否完成,每当有新的observable送出就会直接把旧的observable退订(unsubscribe),永远只处理最新的observable!
  • mergeAll:能够同时处理所有的observable。可以传入一个数值,这个数值代表他可以同时处理的observable 数量。
  • concatMap:concat和map的结合,用在可以确定内部的observable结束时间比外部observable发送时间快的情境,并且不希望有任何并行处理行为,适合少数要一次一次完成到底的的UI动画或特别的HTTP request行为。
  • switchMap:switch和map结合,用在只要最后一次行为的结果,适合绝大多数的使用情境。
  • mergeMap:用在并行处理多个observable,适合需要并行处理的行为,像是多个I/O 的并行处理。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值