我正在学习 Angular,我对这些 observable、observer 和 subscribe 感到困惑 事物。所以请解释一下。
这是一个简单的视觉效果,可以看出差异:
如上所示... Observable 是事件或数据流。它们通常从 Angular 方法返回,例如
http.get
和 myinputBox.valueChanges
。
订阅“启动”可观察流。如果没有订阅(或异步管道),流将不会开始发出值。这类似于订阅报纸或杂志......在订阅之前您不会开始获得它们。
订阅方法接受一个观察者。观察者有三种方法:
每次从可观察对象发出一个项目时进行处理的方法。
发生错误时的处理方法。
观察者完成时清理任何内容的方法。在使用 Angular 的可观察量时很少使用最后一个。
(我同意......试图透过文档的树木看到森林是一个相当大的挑战。我知道他们正在努力改进它们。)
尝试用一个非常简单的例子来解释:-
Observable 就像其他人的 YouTube 频道。 ((它会不时上传新视频(数据),所以它是你的数据源))
您的 YouTube 帐户是一个 Observer
您的 YouTube 帐户 (Observer) 只能收到有关其他人的 YouTube 频道 (Observable) 是否上传了新视频 (有新数据) 或进行直播 (新事件) 的通知,前提是您已订阅该频道
(观察者订阅Observable来监听新数据/任何事件)
其中observable是一个数据源,subscribe就像一个方法/函数,Observer一般就在你身边
Observable 可以被认为是各种数据源(例如:(userInputs)事件、HttpRequests 等)。
在这里创建我们的自定义可观察对象。
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
以下是一些要点:
1) 定义:“Observable 和 Observer”是一种从发布者到订阅者传递消息的模式。
2) 功能流程:
Observable 已创建
观察者订阅 Observable
3)Observable和Observer的实时使用
将 Observable 视为事件或对象流。
观察者是监视它所监视的 Observable 上要更新的 .next 值的东西。这个watch是通过.subscribe(订阅Observable)启动的
一旦观察者(观察者)从 Observable 接收到新值,它就可以使用其函数处理它: .next()、.error() 或 .complete()。这三个 Observer 回调函数对应 Observable 可以发出的三个事件。