【问题标题】:Observables return data over time?Observables 随着时间的推移返回数据?
【发布时间】:2017-07-28 17:15:13
【问题描述】:

我正在浏览 angular.io 文档和其他一些材料,试图跟上 angular 的速度。还没有完全进入我脑海的一件事是可观察的。我在读这个

Observable 帮助我们管理异步数据。您可以将 Observables 视为一个项目数组,随着时间的推移异步到达。 从这里https://www.tektutorialshub.com/angular-http-tutorial-with-rxjs-observables/

我了解同步与异步,但这听起来好像某些数组项可能在不同的时间到达?是这样吗,还是允许调用线程继续,而被观察的线程被允许完成处理,然后在准备好时从中断的地方恢复?

【问题讨论】:

标签: angular rxjs


【解决方案1】:

是的,对于 Observables,某些项目可能会在不同的时间到达。例如,假设您正在观察输入元素值的变化。用户可以键入、暂停和键入更多内容。所以物品在不同的时间到达。

但是,当使用带有 Http 的 Observables 时,Observables 是“一劳永逸”的。这意味着它只从后端获得一个响应作为“一个”可观察条目。然后它可以将该响应映射到一组数据中。

例如,假设您正在通过 Http 检索一组产品。您将获得整个组产品作为一个响应对象,然后在可观察序列中一个可观察。然后可以将该响应映射到适当的产品对象数组中。但 Observable 仍然只将其视为“一个”事物。

有意义吗?

【讨论】:

  • DeborahK - 喜欢你在 Pluralsight 上的 Angular 课程!这是一个很大的帮助
  • 很高兴听到!谢谢!我正在更新它以使用 CLI 和新版本 4.3 HttpClientModule 和 HttpClient 服务。
【解决方案2】:

RxJs 中的Observables 可以观察不同时间到达的物品。您可以观察诸如击键之类的事情,其中​​项目将在它们发生时继续滴入。您还可以观察诸如单个 AJAX 请求之类的情况,您只会得到 1 个响应。

Observable 有一些区别:


Hot vs. Cold Observables

简而言之,对于冷可观察对象,当您订阅它们时,您正在触发一个动作。 AJAX 请求就是一个例子。在订阅 observable 之前,该请求不会触发。


有限的 Observable:

Observables 要么是有限的,要么是无限的。一个有限的 observable(如 AJAX 请求)将在完成后调用订阅的完成回调。其他可观察对象,例如观察 keyDown 事件,只会在取消订阅时结束。每次有 keydown 事件时,它们都会继续调用 onNext 回调。

【讨论】:

    猜你喜欢
    • 2013-06-19
    • 2020-04-21
    • 1970-01-01
    • 1970-01-01
    • 2012-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多