我正在浏览angular.io文档和其他一些试图通过角度加速的材料。还有一件事情还没有完全沉入我的脑海中。我正在读这个
Observable帮助我们管理异步数据。您可以将Observable视为一个项目数组,随着时间的推移异步到达。 从这里https://www.tektutorialshub.com/angular-http-tutorial-with-rxjs-observables/
我理解同步与异步,但这听起来好像有些数组项目可能在不同的时间到达?是这种情况,还是允许调用线程继续进行,而正在观察的线程被允许完成处理然后恢复它准备就绪时停止的地方?
答案 0 :(得分:3)
是的,Observables的某些项目可能会在不同的时间到达。例如,假设您正在观察输入元素值的变化。用户可以键入,暂停和键入更多内容。因此,物品会在不同时间到达。
然而,当使用带有Http的Observable时,Observables是"一个并完成"。这意味着它只得到后端的一个响应,因为"一个"可观察的进入。然后,它可以将一个响应映射到数据数组中。
例如,假设您正在通过Http检索一组产品。您将获得整个产品集作为一个响应对象,然后在可观察序列中一个 Observable。然后可以将该响应映射到适当的产品对象数组中。但Observable仍然只把它视为"一个"的事情。
有意义吗?
答案 1 :(得分:2)
Observables可以观察到不同时间到达的物品。你可以观察到诸如击键之类的东西,物品会在它们发生时继续涓涓细流。您还可以观察单个AJAX请求之类的内容,您只需获得1个响应。
Observables有一些区别:
简而言之,对于冷可观察者,当您订阅它们时,您正在触发一个动作。一个例子是AJAX请求。在观察到observable之前,请求不会触发。
有限可观测量:
可观测量将是有限的或无限的。有限的可观察(例如AJAX请求)将在完成后调用订阅的完整回调。其他可观察对象,例如观察keyDown事件,只有在取消订阅时才会结束。每次有keydown事件时,它们将继续调用onNext回调。