RxJS入门指南
Prerequisite(先导知识) 本文是RxJS的入门知识,在文章中会涉及到大量的JavaScript示例代码,想要更好的理解本文,你需要具备以下知识。 理解基本的ES6和TypeScript语法 了解过观察者模式 Observable? Observer? 在RxJSObservable和Observer。要想很好的理解两个概念,我需要借用一个生活中很常见的例子,买房。 在这个图中,我们的购房者一直在密切的关注我们的房价。房价随着时间波动,购房者可能会根据波动的房价而采取一系列的行动,比如购入或者继续观望。购房者与房价的这样一种关系其实就构成了一种观察者关系。套用到观察者模式中, 房价 – Observable 购房者 – Observer 购房者观察房价 – Subscribe(订阅) 再结合买房的例子,我们可以很学术的描述Observable和Observer的行为。 Obserable 可被观察(房价被购房者关注),并且随时间变化发出(emit)不同值(房价波动)。 Observer 观察Observable(购房者关注房价),并在Observable(房价)发出不同值(房价波动)时做出响应(买房或者观望)。 Observable和Observer之间通过订阅(Subscription)来建立观察关系。 当Observable没有Observer的时候,即使发出了值,也不会产生任何影响(无购房意愿者不会响应房价波动) RxJS中的Observable和Observer 有了基本的Observable和Observer的概念,我们再来看看RxJS中的Observable和Observer。 创建一个Observable 我们可以调用 Observable.create 方法来创建一个Observable,这个方法接受一个函数作为参数,这个函数叫做 producer 函数, 用来生成 Observable的值。该函数的参数是observer,调用observer.next()就可以生成一个有一系列值的Observable。 1 2 3 4 5 6 import { Observable } from 'rxjs'; const observable = Observable.create(observer => { observer.next('foo'); observer.next('bar'); }) 但是运行这段代码后并不会发生任何事情,我们需要一个Observer去Subscribe这个Observable,然后Observer基于Observable发出的值做出响应。 Subscribe一个Observerable 我们通过下面的这段代码去Subscribe一个Observable 1 2 3 4 5 6 7 8 import { Observable } from 'rxjs'; const observable = Observable.create(observer => { observer.next('foo'); observer.next('bar'); }) observable.subscribe(console.log) 运行代码,console中就会依次打印 foo / bar 了 ...