RxJS & Angular 6 - observables, subjects 和基本的数组获取和添加操作
RxJS & Angular 6 - observables, subjects and basic get and add operations on arrays
我正在努力思考 observables/observers/subjects 和 angular。我浏览了许多涵盖可观察基础知识的教程,基本订阅场景很有意义。然而,这些教程似乎没有涵盖 adding 到可观察的集合。他们中的大多数人似乎也专注于使用 HttpClient,而我试图在不依赖 Web 服务的情况下模拟一些数据——只是用于测试的基本内存对象数组。
我创建了一个简单的应用程序来展示我的困惑。
组件 1 和服务 1 展示了获取数字集合和添加新数字的基本不可观察方式。组件 2 和服务 2 展示了一种获取数据和由于订阅而自动获取更新的可观察方式。我正在使用 Subject 来做到这一点。
https://github.com/rpasechnikov/observable-test-app
谁能指出我是在正确的道路上还是完全误解了可观察到的模式?我需要在这里使用 Subject 还是应该坚持使用 Observables?如果是这样 - 我如何从中提出 next() 通知?最重要的是,有没有人知道为什么第一个 this.subject.next()
不触发更新,而进一步的调用会触发更新?
非常感谢!!
使用 Observables 的概念很容易被误解,因为要同时查看很多东西!!!
但是您不必惊慌,因为它们并没有您想象的那么糟糕。
您使用的是一种特殊类型的 Observable,它既是 Observer
又是 Observable
等 multicasting
.
Observer
:当你想通过next
更新可观察流时,你使用我
Observable
:当你想通过subscribe
从可观察流中获取值时,你可以使用我
Ben Lesh gave a talk on Subjects
在您的情况下 (Service 2 on your github),您使用的是 Subject
。这意味着如果我在通过 next
更新我的流之前没有观察者(有人订阅了我),那么那个人将不会获得该值。
你可以试试用BehaviorSubject
。主要区别是
- 我必须有一个初始值
- 每当有人订阅我时,他们将始终获得最新值,无论是在我更新之前还是之后。
试试吧!
希望对您有所帮助
我正在努力思考 observables/observers/subjects 和 angular。我浏览了许多涵盖可观察基础知识的教程,基本订阅场景很有意义。然而,这些教程似乎没有涵盖 adding 到可观察的集合。他们中的大多数人似乎也专注于使用 HttpClient,而我试图在不依赖 Web 服务的情况下模拟一些数据——只是用于测试的基本内存对象数组。
我创建了一个简单的应用程序来展示我的困惑。
组件 1 和服务 1 展示了获取数字集合和添加新数字的基本不可观察方式。组件 2 和服务 2 展示了一种获取数据和由于订阅而自动获取更新的可观察方式。我正在使用 Subject 来做到这一点。
https://github.com/rpasechnikov/observable-test-app
谁能指出我是在正确的道路上还是完全误解了可观察到的模式?我需要在这里使用 Subject 还是应该坚持使用 Observables?如果是这样 - 我如何从中提出 next() 通知?最重要的是,有没有人知道为什么第一个 this.subject.next()
不触发更新,而进一步的调用会触发更新?
非常感谢!!
使用 Observables 的概念很容易被误解,因为要同时查看很多东西!!!
但是您不必惊慌,因为它们并没有您想象的那么糟糕。
您使用的是一种特殊类型的 Observable,它既是 Observer
又是 Observable
等 multicasting
.
Observer
:当你想通过next
Observable
:当你想通过subscribe
Ben Lesh gave a talk on Subjects
在您的情况下 (Service 2 on your github),您使用的是 Subject
。这意味着如果我在通过 next
更新我的流之前没有观察者(有人订阅了我),那么那个人将不会获得该值。
你可以试试用BehaviorSubject
。主要区别是
- 我必须有一个初始值
- 每当有人订阅我时,他们将始终获得最新值,无论是在我更新之前还是之后。
试试吧!
希望对您有所帮助