Observable怎么在Angular中使用
这期内容当中小编将会给大家带来有关Observable怎么在Angular中使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
创新互联主营北塔网站建设的网络公司,主营网站建设方案,app开发定制,北塔h5成都微信小程序搭建,北塔网站营销推广欢迎北塔等地区企业咨询
可观察对象(Observable)
可观察对象支持在应用的发布者和订阅者之间传递消息。
可观察对象是声明式的 —— 即定义的用于发布值的函数,在有消费者订阅它之前,这个函数不会实际执行。
可观察对象可能会发出的三种通知:
通知类型 | 说明 |
---|---|
next | 必要。用来处理每个送达值。在开始执行后可能执行零次或多次。 |
error | 可选。用来处理错误通知。错误会中断这个可观察对象实例的执行过程。 |
complete | 可选。用来处理执行完毕(complete)通知。当执行完毕后,这些值就会继续传给下一个处理器。 |
定义观察者
观察者(observer):用于接收可观察对象通知的处理器要实现 Observer 接口,这个对象定义了一些回调函数来处理可观察对象可能会发来的三种通知。
观察者对象可以定义这三种处理器的任意组合。如果你不为某种通知类型提供处理器,这个观察者就会忽略相应类型的通知。
// Create observer object const myObserver = { next: (_data) => { // next通知类型处理器 }, error: err => { // error通知类型处理器 }, complete: () => console.log('Observer got a complete notification'), };
订阅
只有当Observable的实例被订阅时,Observable实例才会发布值。订阅时要先调用该实例的subscribe()方法,并把一个观察者对象传给它,用来接收通知。
语法:Observable.subscribe(ObserverObject)
,其中,Observable为可观察对象实例,ObserverObject为观察者对象。
// 官网示例 // Create simple observable that emits three values const myObservable = of(1, 2, 3); // Create observer object const myObserver = { 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'), }; // Execute with the observer object myObservable.subscribe(myObserver); // Logs: // Observer got a next value: 1 // Observer got a next value: 2 // Observer got a next value: 3 // Observer got a complete notification
另外,subscribe() 方法还可以接收定义在同一行中的回调函数,无论 next、error 还是 complete 处理器。比如,下面的 subscribe() 调用和前面指定预定义观察者的例子是等价的。
myObservable.subscribe( x => console.log('Observer got a next value: ' + x), err => console.error('Observer got an error: ' + err), () => console.log('Observer got a complete notification') );
注:无论哪种情况,next通知类型的处理器是必要的,而error和complete处理器是可选的。
subscribe() 调用会返回一个 Subscription 对象,该对象具有一个 unsubscribe()
方法。 当调用该方法时,你就会停止接收通知。
上述就是小编为大家分享的Observable怎么在Angular中使用了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注创新互联行业资讯频道。
本文标题:Observable怎么在Angular中使用
文章出自:http://cdiso.cn/article/jsjige.html