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

是否可以使用像map、filter等运算符和promise

梁浩涆
2023-03-14

以下是我在URL中读到的优势:有角度的承诺和可观察的

承诺:

  1. 返回单个值
  2. 未取消
  3. 包含try/catch和async/await
  4. 的更多可读代码

可观测的

  1. 随时间使用多个值
  2. 可取消
  3. 支持map、filter、reduce和类似运算符
  4. 使用反应扩展(rxj)
  5. 项随时间异步到达的数组

在observable中,我看到3&4点支持操作符和RXJ。我只是有一个基本的问题,比如我不能使用RXJS和有承诺的操作符吗?第5点是什么意思

共有1个答案

翟单弓
2023-03-14

简而言之,不,你不能直接在一个承诺上使用那些操作符(比如map,filter)。

Rxjs确实提供了一个操作符toPromise,它确实将一个可观察值转换为一个Promise(如果您喜欢的话)。

我认为第5点实际上是与第1点混为一谈的。第1点是可观察性的关键所在:随着时间的推移处理0到n个值。

如果您习惯于简单地对Ajax请求使用promissions(例如,命中一个端点并返回一个值),那么您可能不会认为这是有用的。但是对于可观察的情况,您可以在任何上下文中使用它们--例如,DOM事件。

如果您要通过监听Mouseover事件来创建一个可观察的,那么您将在任何给定的时间长度内接收n个值--然后您可以对这些事件做出反应。

在考虑Ajax请求时,典型的例子是向前看搜索输入,这在您的问题的链接中有详细的说明。

 类似资料:
  • 我从对象和对象数组中更改了一个对象两次,这样在第一次迭代中,我过滤掉了几个对象,在第二次迭代中,我使用map更改了每个过滤后的对象。我能用减速机或更好的吗?

  • 我有一个简单的流如下: 但Intellij建议我: “filter()”和“map()”可以互换。检查信息:报告流API调用链可以简化。它允许在遍历集合时避免创建冗余的临时对象。例如 collection.stream()→collection.for每个() collection.stream()。 Intellij给出的例子很容易理解,但我不明白为什么它建议我使用。 我查看了的来源,但没有找到

  • 问题内容: 我对对象使用开关盒有疑问: 例如:我的问题可以用Java复制: 如何使用实施? 问题答案: 这是子类型多态性有帮助的典型方案。请执行下列操作 然后,你可以简单的调用上。 如果你不能随意更改,和,则可以应用访问者模式来实现相同目的。

  • 问题内容: 具体来说,我想创建一个Array类,并希望重载[]​​运算符。 问题答案: 如果您正在使用PHP5(应该如此),请查看SPL ArrayObject 类。文档不是太好,但是我认为如果扩展ArrayObject,您将拥有“假”数组。 编辑:这是我的简单示例;恐怕我没有有价值的用例:

  • 问题内容: 我有一个Python程序,该程序通过 PySerial 模块从串行端口读取数据。我需要牢记的两个条件是:我不知道会有多少数据到达,并且我也不知道何时需要数据。 基于此,我提出了以下代码段: 因此,此代码将永远循环以从串行端口获取数据。我们最多可以存储500个字符,然后通过设置一个标志来警告主循环。如果没有数据,我们将回到睡眠状态并等待。 该代码正在运行,但是我不喜欢5s超时。我需要它是