在上一节中,咱们讨论了observable的工做原理和建立过程,那么在这一节中,咱们来介绍observable类所具备的一系列方法,经过这些方法,咱们能够更加灵活地使用observable变量。this
Operators的使用 Operators是observable类拥有的一系列public method,本节咱们经过实际代码来演练一些经常使用的operator,并看看他们输出的结果。code
1.maporm
map方法的做用是对每一个observable对象发出的值,根据必定的规则进行映射。以下:对象
source_from = Observable.from('123').map(x => x + 's ');
能够获得结果rxjs
相似的还有mapTo方法,能够将发出的值映射为固定值。图片
2.zipip
zip方法能够将两个observable序列合并为一个observable序列。以下文档
source_from = Observable.from('123'); source_interval = Observable.interval(1000); source_zip = this.source_from.zip(this.source_interval, (x, y) => x);
经过以上方法,就能够将interval和from方法进行结合,一、二、3会在相隔1s后相继输出,再输出complete。it
3.scanio
scan方法相似于reduce方法,对发出的值进行accumulation的处理。以下:
source_from = Observable.from('Andrew'); source_interval = Observable.interval(1000); source_zip = this.source_from.zip(this.source_interval, (x, y) => x); source_scan = this.source_zip.scan((origin, next) => origin + next, 's');
能够获得这样的输出结果:
4.filter
filter方法能够对发出的值进行过滤操做,并制定过滤条件。以下:
source_from = Observable.from([1, 2, 3, 4, 5, 6, 7]); source_interval = Observable.interval(1000); source_zip = this.source_from.zip(this.source_interval, (x, y) => x); source_filter = this.source_zip.filter((x) => x % 2 !== 0);
则能够看到以下的输出:
5.take
take方法能够制定观察者接收到的值的数量,在达到指定数量后,则会调用观察者的complete方法。
source_from = Observable.from([1, 2, 3, 4, 5, 6, 7]); source_interval = Observable.interval(1000); source_zip = this.source_from.zip(this.source_interval, (x, y) => x); source_filter = this.source_zip.take(3);
则能够获得以下的输出:
6.distinct
distinct能够对一系列发送的值进行去重操做。
source_from = Observable.from([1, 2, 2, 6, 5, 6, 7, 4, 4]); source_interval = Observable.interval(1000); source_zip = this.source_from.zip(this.source_interval, (x, y) => x); source_distinct = this.source_zip.distinct();
那么能够获得这样的输出:
到目前为止,咱们仅仅介绍了不少operator中的6个,事实上,对于不一样情形,operator能够分为creation, filter, combination, transformation等等的功能,建议你根据本身的需求去查阅rxjs的官方文档,进行合适的使用。