详解Angular中的Observable(可观察对象)
时间:2021-04-01
来源:互联网
今天PHP爱好者给大家带来Angular 可观察对象(Observable)。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。
可观察对象(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()
方法。 当调用该方法时,你就会停止接收通知。
以上就是详解Angular中的Observable(可观察对象)的详细内容,更多请关注php爱好者其它相关文章!
-
莱特币指南 时间:2025-05-02
-
三角洲行动研发部门任务怎么过-研发部门流程逃课方法 时间:2025-05-02
-
王者荣耀凯动画什么时候出-王者凯动画上线时间 时间:2025-05-02
-
DNF手游成长活动怎么选择绑定-雷米迪亚支援活动 时间:2025-05-02
-
七日世界新手进阶开服选择-七日新手怎么开局 时间:2025-05-02
-
王者荣耀新英雄是孙权吗-王者容易新英雄是谁 时间:2025-05-02
今日更新
-
微信面对面红包怎么发?这份面对面红包攻略请收下!
阅读:20
-
Javascript属于哪种语言类型
阅读:25
-
php数组转json的函数是什么
阅读:19
-
qq音乐怎么分享到朋友圈?5个步骤教你轻松分享!
阅读:22
-
详细了解Nodejs中的Promise对象
阅读:18
-
详解Bootstrap中的标签、徽章、巨幕和页头
阅读:20
-
php 二维数组怎么不去重合并
阅读:21
-
高德地图app里怎么设置看到家人地图卡片?
阅读:20
-
php如何去掉第一个字符
阅读:21
-
php怎么删除乱码
阅读:21