当前位置: 首页 > 知识库问答 >
问题:

在角度6中使用rxjs观测值的目的是什么?与异步/等待相比,rxjs有哪些优势?[副本]

农明辉
2023-03-14

我目前正在开发一个web应用程序,它使用angular 6作为前端框架。我还将使用一些apiendpoint从服务器获取数据。根据angular docs建议使用rxjs,但在使用rxjs操作符时,我有点困惑。

共有2个答案

池砚文
2023-03-14

>

  • 如果我们在http调用完成之前取消订阅,则Observable是可取消的,http调用将被中止。

    Observable具有更好的可组合性,例如:默认情况下Promise有1个扁平化策略:promise1。然后()=

    开关地图,
    合并地图,
    浓度地图,
    排气地图,

    可观察的更具表现力它就像异步操作的Lodash(有许多有用的操作符)

  • 单于耘豪
    2023-03-14

    如果您只考虑API的HTTP调用,RXJS VSpromise带来的优势就不那么多了。retry操作符使出现错误时更容易重试,使用switchMap管理竞争条件可能更容易,但总体来说没有那么多。

    原因是超文本传输协议调用是“一锤子”的事情。您启动1个调用,而该1个调用仅返回1个结果或错误。就像Promes是“一次性”的东西。

    RxJS真正闪耀的地方是当您必须处理随时间推移可能有超过1个发射的事件流时。云和DOM是这类流源的两个示例。在这些情况下,你可以看到RxJS是如何使用类固醇的。

    这里有几个例子:

    >

  • 来自Angular大学的关于使用可观测数据实现提前类型的视频

    关于同一主题的文章

    如何使用RxJS设置对象动画

  •  类似资料:
    • 我有一个服务,有一个方法foo。在该方法中,我订阅了一个可观察的(超文本传输协议-客户端)。 我喜欢从foo返回一个布尔值,该值取决于get。这不起作用,因为http.get是asynchrouns-在http.get完成之前调用return。 我怎样才能使这个同步? 编辑 返回可观察的布尔值在这里不是一个选项。这是因为我处理get in foo的响应(此处未显示),但我也需要根据它的返回来执行f

    • 我有一个HTTP请求,希望将结果共享给多个组件。当然,HTTP请求返回一个可观察的。我希望多个组件能够订阅此服务,而不会触发额外的HTTP请求。 我在一个组件中使用实现了这一点,该组件按需发出HTTP请求,并有另一种方法订阅该主题。虽然这是可行的,但似乎有些过分,而且肯定有更好的方法。 主题服务 和一个订户 和第二个订户 从管道链中删除时,会发出多个网络请求。是否有一种更优雅/正确的方式将观察到的

    • 我有两个源观测值,当一个源观测值发出时,我需要计算一些数据。我试图使用操作符,但它只在每个源观测值第一次发出时发出一个值。 是否有任何运算符类似于,一旦任何源可观测对象第一次发出,就立即发出?如果没有,最清晰的方法是什么? 我所尝试的:

    • 以下代码未订阅: 但是如果我这样做,它确实订阅: 更新:这个工作太 但当我添加逻辑时,它并没有 我遵循RxJS官方文档:https://rxjs-dev.firebaseapp.com/api/operators/find 我甚至必须在,当我执行时,什么也不会打印出来。我也尝试过使用管道。 对象: 我传递的昵称是将对象与“Devpato”进行比较

    • 我有一个沙盒,它订阅了一个消息流,我想过滤该流,以查找已发送到或从特定用户使用另一个组件中指定的路由参数接收的消息。 messages.sandbox.ts: messages.detail.container.ts this.matching消息$似乎只包括this.received消息$但是我知道this.sent消息$不是空,因为我可以在我的模板中使用它没有问题。 我是不是遗漏了一些合并观测

    • 问题内容: 用…实现事情 似乎 已经 很简单 了… 与 ngResource相比 ,使用Restangular 有哪些优点/缺点? 1.1.3 将返回承诺,并且可以使用[最新的PRcommit来实现。将来会提供支持来支持Restangular所做的其他动词吗?如果发生这种情况,Restangular似乎将消失并变得不耐烦。 问题答案: 我是Restangular的创建者。 我已经在自述文件中创建了