详解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-11-19 -
Linux中软连接和硬链接的区别、优缺点和应用场景等 时间:2025-11-19 -
什么是Hypervisor Hypervisor虚拟机监控程序详解 时间:2025-11-19 -
numeric是什么数据类型 decimal和numeric的区别 时间:2025-11-19 -
Java中public class和class的区别 时间:2025-11-19 -
Android中Activity跳转的两种实现方法 时间:2025-11-19
今日更新
-
上过村晚的梗是什么意思?揭秘网络爆火乡村春晚名场面背后的搞笑真相!
阅读:18
-
千机阵锦囊阵容怎么搭配-千机阵阵容搭配新手
阅读:18
-
CF手游不良人联动武器-G36-李星云现已震撼曝光
阅读:18
-
阿里云官网网页版入口 一键直达阿里云网页版
阅读:18
-
币安风控申诉处理时间多久出结果 解答用户疑问
阅读:18
-
Yandex官网入口在哪 俄罗斯Yandex搜索引擎官网首页
阅读:18
-
币安风控后密码重置失败原因解析及解决方案
阅读:18
-
上海Z揭秘:网络爆梗背后的真相与笑点,速来get新知识!
阅读:18
-
上海地名梗是什么梗揭秘沪上热门调侃背后的趣味文化
阅读:18
-
雨课堂网页版官方网址是什么 最新登录入口一键直达
阅读:18










