如何理解RXJS(2)——operators的使用

在上一节中,我们讨论了observable的工作原理和创建过程,那么在这一节中,我们来介绍observable类所具有的一系列方法,通过这些方法,我们可以更加灵活地使用observable变量。

Operators的使用 Operators是observable类拥有的一系列public method,本节我们通过实际代码来演练一些常用的operator,并看看他们输出的结果。

1.map

map方法的作用是对每个observable对象发出的值,根据一定的规则进行映射。如下:

source_from = Observable.from('123').map(x => x + 's ');

可以得到结果

map

类似的还有mapTo方法,可以将发出的值映射为固定值。

2.zip

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方法进行结合,1、2、3会在相隔1s后相继输出,再输出complete。

3.scan

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');

可以得到这样的输出结果:

scan

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);

则可以看到如下的输出:

filter

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的官方文档,进行合适的使用。

转载于:https://my.oschina.net/u/3724328/blog/1584364

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值