登录  /  注册
首页 > web前端 > js教程 > 正文

Rxjs的使用详解

php中世界最好的语言
发布: 2018-03-12 15:46:00
原创
2651人浏览过

这次给大家带来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: 0
first: 0
second: 1
first: 1
second: 2
登录后复制

订阅也有一个remove(otherSubscription)方法,用于解除被add添加的子订阅。

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

相关阅读:

js-xlsx的工具类库xlsxUtils的使用详解

JS的日常常用函数整合

以上就是Rxjs的使用详解的详细内容,更多请关注php中文网其它相关文章!

智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号