Rxjs的常用概念

1. Rxjs的基本概念
Observable Observer Subscription Subject Operators
Observer 就是实现该接口的一种对象
interface Observer<T> {
    void onCompleted();
    void one rror(java.lang.Throwable e);
    void onNext(T t);
}
支持next和completed,类似于Promise
2. Rxjs Observable的创建
create
fromPromise
fromEvent
from
of
interval
range
操作符按照功能分类,大概有以下几个内容:
创建,即创建 Observable 的操作符,如 from、of、interval 转换 如 map、pluck 过滤 如 filter、last、take、throttle、debounce 合并 如 concat、merge、zip 多播 如 multicast 错误处理 如 catch、retry 辅助工具 如 do 条件分支 如 every、find、isEmpty 数学 如 count、max、min、reduce   3.Rxjs PublishSubject,ReplaySubject,BehaviorSubject,AsyncSubject   PublishSubject 正常发布订阅 ReplaySubject 缓存所有数据,每次新订阅可接收所有数据
ReplaySubject.createWithSize 限制缓存多少个数据; ReplaySubject.createWithTime 限制一个数据可以在缓存中保留多长时间 ReplaySubject.createWithTimeAndSize 则可以同时限制时间和个数
BehaviorSubject 只保留最后一个值, 立即发出 AsyncSubject 只保留最后一个值, 只在调用complete时   4. Rxjs switchMap, mergeMap, concatMap, exhaustMap   concatMap: 串行执行, 前一个完成,才开始后一个 mergeMap: 并行执行 switchMap: 顺序执行, 后一个开始,会取消前一个,适用的场景较多 (在取消之前, 前一个执行较快, 也会有订阅输出, 不同于ajax的abort) exhaustMap: 顺序执行, 前一个执行期间, 后一个发出会被丢弃, 直到前一个执行完成, 停止丢弃,开始接收新的
switchMap例子: 完整的拖曳事件
Rx.Observable.fromEvent(document, ‘mousedown’)
  .map(e => e.target)
  .switchMap(target => Rx.Observable.fromEvent(document, ‘mousemove’).map(e => {
  return { 
    startX: target.offsetX, 
    startY: target.offsetY,
    moveX: e.pageX,
    moveY: e.pageY,
  }
}))
.subscribe(pos => console.log(pos))
switchMap里面的函数接收mousedown这个流给的target,然后再返回一个新的关于mousemove的流,并且对这个新的流作map处理,过程中把前面的target也用上了。在switch发生的时候,mousedown的事件监听就给丢掉了。后面就全是跟mousemove相关的监听。     出处: https://juejin.cn/post/6861514628132765710 出处: https://www.bilibili.com/read/cv13462830 出处: https://blog.csdn.net/kongbaidepao/article/details/51240456 出处: https://blog.csdn.net/qq_26025363/article/details/100009556 出处: https://www.tangshuang.net/6105.html

上一篇:机器学习-特征工程-Missing value和Category encoding


下一篇:HTML图片、超链接