Rxjs 技术学习
两个基本问题: Rxjs 是干什么的? Rxjs 是使用 Observables 的响应式编程的库,它使编写异步或基于回调的代码更容易。 它解决了什么问题? 同步和异步的统一写法 数据变更过程的组合拆分 数据和视图的精确绑定 条件变更后,对应数据自动重新计算 理解rxjs的前置知识点 同步与异步 同步(Synchronous)就是整个处理过程顺序执行,当各个过程都执行完毕,并返回结果。是一种线性执行的方式,执行的流程不能跨越。一般用于流程性比较强的程序,比如用户登录,需要对用户验证完成后才能登录系统。 异步(Asynchronous)则是只是发送了调用的指令,调用者无需等待被调用的方法完全执行完毕;而是继续执行下面的流程。是一种并行处理的方式,不必等待一个程序执行完,可以执行其它的任务,比如页面数据加载过程,不需要等所有数据获取后再显示页面。 同步与异步的区别 传统的同步编程是一种请求响应模型,调用一个方法,等待其响应返回.。而异步编程就是,发出一个任务,不等待结果,就继续发出下一个任务。至于上一个任务的执行结果,我们可以通过两种方式获得,一个是主动轮询,另一个是单独开一个线程去等待结果接收并回调执行。 响应式编程 响应式编程是使用异步数据流进行编程 Stream/流 作为响应式编程的核心,流的本质是一个按时间顺序排列的进行中事件的序列集合。 它可以发送三种不同的事情: 某种类型的值 错误(Error) 已完成信号(”Completed” Signal) 对于一个点击事件,返回多次点击事件 观察者模式 观察者模式又叫发布订阅模式(Publish/Subscribe),它是一种一对多的关系,让多个观察者(Obesver)同时监听一个主题(Subject),这个主题也就是被观察者(Observable),被观察者的状态发生变化时就会通知所有的观察者,使得它们能够接收到更新的内容。观察者模式主题和观察者是分离的,不是主动触发而是被动监听。 迭代器模式 迭代器(Iterator)模式又叫游标(Sursor)模式,迭代器具有 next 方法,可以顺序访问一个聚合对象中的各个元素,而不需要暴露该对象的内部表现。迭代器模式可以把迭代的过程从从业务逻辑中分离出来,迭代器将使用者和目标对象隔离开来,即使不了解对象的内部构造,也可以通过迭代器提供的方法顺序访问其每个元素。 例如在 JavaScript 中,可以通过 iterator 方法来获取一个迭代对象,然后调用迭代对象的 next 方法去迭代得到一个个的元素: var iterable = [1, 2]; var iterator = iterable[Symbol.iterator](); iterator.next(); // => { value: …