这次给大家带来rxjs的使用详解,使用rxjs的注意事项有哪些,下面就是实战案例,一起来看一下。
一个可观察对象的执行期间,零个到无穷多个next通知被发送。如果Error或者Complete通知一旦被发送,此后将不再发送任何值。
可观察对象严格的坚守这个契约,所以,下面的代码将不会发送包含数值4的next通知
var observable = Rx.Observable.create(function subscribe(observer) {observer.next(1);observer.next(2);observer.next(3);observer.complete();observer.next(4); // Is not delivered because it would violate the contract});
登录后复制
不失为一个好方式的是,使用try/catch语句包裹通知语句,如果捕获了异常将会发送一个错误通知。
var observable = Rx.Observable.create(function subscribe(observer) {try {observer.next(1);observer.next(2);observer.next(3);observer.complete();} catch (err) {observer.error(err); // delivers an error if it caught one}});
登录后复制
取消订阅 unsubscribe()
由于可观察对象的执行可能是无限的(不停地next),而对于观察者来说却往往希望在有限的时间内终止执行,因此我们需要一个API来取消执行。
var observable = Rx.Observable.from([10, 20, 30]);var subscription = observable.subscribe(x => console.log(x));// Later:subscription.unsubscribe();
在你订阅了之后,你将会得到一个Subscription对象,它表示正在进行的执行。大胆的去使用unsubscribe()去终止执行吧。
observer观察者
什么是观察者?观察者是可观察对象所发送数据的消费者,观察者简单而言是一组回调函数 , 分别对应一种被可观察对象发送的通知的类型:next, error和complete。下面是一个典型的观察者对象的例子:
var observer={next:x=>console.log('Observer got a next value: ' + x),error: err => console.error('Observer got an error: ' + err),complete: () => console.log('Observer got a complete notification')}
登录后复制
观察者不过是三个回调函数组成的对象,每个回调函数分别对应可观察对象的通知类型。
Subscription订阅
订阅对象也可以被放置在一起,因此对一个订阅对象的unsubscribe()进行调用,可以对多个订阅进行取消。做法是:把一个订阅”加”进另一个订阅。
var observable1 = Rx.Observable.interval(400);var observable2 = Rx.Observable.interval(300);var subscription = observable1.subscribe(x => console.log('first: ' + x));var childSubscription = observable2.subscribe(x => console.log('second: ' + x));subscription.add(childSubscription);setTimeout(() => {// Unsubscribes BOTH subscription and childSubscriptionsubscription.unsubscribe();}, 1000);
登录后复制
执行之后,我们可以在控制台得到:
second: 0first: 0second: 1first: 1second: 2
登录后复制
订阅也有一个remove(otherSubscription)方法,用于解除被add添加的子订阅。
相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!
相关阅读:
js-xlsx的工具类库xlsxUtils的使用详解
JS的日常常用函数整合
以上就是Rxjs的使用详解的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2783762.html