Rxjs认知-001

Day01 认识Rxjs

    使用 callback 或是 Promise 甚至是新的语法 async/await —— 但随着应用的越来越复杂,编写非同步的程序仍然非常困难。

    Rxjs提供了一种基于可观测数据流在异步编程应用中的库。它是基于数据流的响应式的结合观察者和迭代器模式的一种库。

首先来理解几个概念:

  • 响应式编程: 一种面向数据流和变化传播的编程范式。在编程语言中很方便地表达静态或动态的数据流,而相关的计算模型会自动将变化的值通过数据流进行传播。—— wikipedia

  • 流: 一个不间断的按照时间排序的序列。它产生三种不同类型事件: 值,错误,完成的信号。对这三个定义事件处理函数,就可以异步的捕获这些事件

  • 迭代器模式: 提供一种方法顺序访问一个聚合对象中的各个元素,而不需要暴露该对象的内部表示。

与Promise的区别

  • Promise本质上也是一个Observable,能使用fromPromise把Promise转成Observable
  • 但是Promise .then()只能返回一个值,Observable可以返回多个值
  • Promise要么resolve要么reject,并且只响应一次。而Observable可以响应多次
  • Promise不能取消,Observable可以调用unsubscribe()取消订阅

解决的问题

  • 同步和异步的统一
  • 可组合的数据变更过程
  • 数据和视图的精确绑定
  • 条件变更之后的自动重新计算

Rx 如此高效和强大,得益于其强大的操作符 。

主要包含下面几类

  • 创建操作符: create, range, of, from, fromEvent, fromPromise, empty ..
  • 组合 contact ,merge, startWith, zip ..
  • 时间 delay , throttle, dobounceTime, interval ..
  • 过滤: filter, first, last, skip, distinct, take ..
  • 转换: buffer,map, mapTo, mergeMap, switch, switchMap, reduce, scan ..
  • 工具: do, toPromise ..

一则故事

  • Observable 是一个值或事件的流集合;就好比一条滚滚东流的大河,这条河就作为流,是被观察者。
  • source 我们定义是一种资源,是被观察者产生的有价值的数据,就好这条大河里面携带者各种鱼,沙子,还有水,是各种资源;
  • Observer作为资源索取者,就好比大河旁边的工厂,有发电厂,鱼类加工厂,沙石厂等,这些工厂需要河里的资源来生产商品,他就要实时观察这条河流,工厂就是观察者;
  • subscriber 是订阅者,就好比河道管理者,他建立一张清单来连接大河资源和使用者之间的联系,分别通过不同的处理(操作符)提供给不同的工厂不同的资源,也就是建立被观察者和观察者之间的联系;
故事的主角基本都已登场,接下来我们一步步演绎故事的情节。

你可能感兴趣的:(Rxjs认知-001)