详解Angular中的Observable(可观察对象)


本文摘自PHP中文网,作者青灯夜游,侵删。

本篇文章带大家了解一下Angular 可观察对象(Observable)。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

相关教程推荐:《angular教程》

可观察对象(Observable)

可观察对象支持在应用的发布者和订阅者之间传递消息。

可观察对象是声明式的 ―― 即定义的用于发布值的函数,在有消费者订阅它之前,这个函数不会实际执行。


可观察对象可能会发出的三种通知:

通知类型说明
next必要。用来处理每个送达值。在开始执行后可能执行零次或多次。
error可选。用来处理错误通知。错误会中断这个可观察对象实例的执行过程。
complete可选。用来处理执行完毕(complete)通知。当执行完毕后,这些值就会继续传给下一个处理器。

定义观察者

观察者(observer): 用于接收可观察对象通知的处理器要实现 Observer 接口,这个对象定义了一些回调函数来处理可观察对象可能会发来的三种通知。
观察者对象可以定义这三种处理器的任意组合。如果你不为某种通知类型提供处理器,这个观察者就会忽略相应类型的通知。

1

2

3

4

5

6

7

8

9

10

// 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为观察者对象。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

// 官网示例

// 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() 调用和前面指定预定义观察者的例子是等价的。

1

2

3

4

5

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()方法。 当调用该方法时,你就会停止接收通知。

更多编程相关知识,请访问:编程视频!!

以上就是详解Angular中的Observable(可观察对象)的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

AngularAngularjs间有什么关系

深入了解Angular中的hostbinding和hostlistener装饰器

浅谈Angular控制器通信的4种方式

浅谈Angular中优化绑定(脏检查)性能的小技巧

16个值得收藏的Angular ui框架分享

深入了解Angular中的component组件

深入了解Angular中的模块和懒加载

浅谈Angular中组件样式的工作原理

浅谈Angular模板指令:ng-template和ng-container的用法

浅谈Angular中控制器、服务和指令的关系

更多相关阅读请进入《Angular》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...