我正在学习角度知识,我对这些可观察的,观察者和订阅感到困惑 事情。所以请解释。
答案 0 :(得分:11)
这是一个简单的视觉效果,可以看出两者之间的区别:
如上所示... 可观察是事件或数据流。它们通常是从Angular方法返回的,例如http.get
和myinputBox.valueChanges
。
订阅“开始”可观察的视频流。没有订阅(或异步管道),流将不会开始发出值。这类似于订阅报纸或杂志...在订阅之前,您不会开始得到它们。
subscribe方法需要一个观察者。观察者有三种方法:
每次从可观察对象发射物品时要处理的方法。
处理发生的任何错误的方法。
观察者完成时清除所有内容的方法。在使用Angular的可观察对象时,很少使用最后一个。
希望这会有所帮助。
(而且我同意...试图通过文档的树木看森林是一个很大的挑战。我知道他们正在努力改善它们。)
答案 1 :(得分:1)
以下是一些关键点:
1)定义:“可观察和观察者”是从发布者到订阅者传递消息的一种模式。
2)功能流程:
可观察的已创建
观察者订阅Observable
3)实时使用Observable和Observer
答案 2 :(得分:1)
Observable 可以被认为是各种数据源(例如:(userInputs)Events、HttpRequests 等)。
在这里创建我们的自定义 observable。
var observable = Observable.create((observer: any)=>{
observer.next("Hii")
observer.next("how are you")
observer.complete()
observer.next("This will not send to observer")
});
观察者基本上是订阅 Observable 的人。
observable.subscribe(
(data: any) => console.log(data), // for handling data
(error: any) => console.log(error), // for handling error
() => console.log('completed'); // for handling completion
);
在这里你可以了解更多关于 Observable 的信息 http://reactivex.io/documentation/observable.html
答案 3 :(得分:0)
尝试用一个非常简单的例子来解释:-
Observable 就像其他人的 YouTube 频道。 ((它不时上传新的视频(数据),所以它是你的数据源))
您的 YouTube 帐户是观察者
您的 youtube 帐户(观察者)只能收到有关其他人的 youtube 频道(观察者)是否上传了新视频(有新的数据)或进行直播(新活动),前提是您订阅了该频道
(Observer 订阅 Observable 以监听新数据/任何事件)
其中observable是数据源,subscribe是方法/函数,Observer一般在你这边