【问题标题】:Is the RxJS map operator used only for (x=>x) the wrong operator?RxJS 映射运算符是否仅用于 (x=>x) 错误的运算符?
【发布时间】:2018-08-23 17:05:01
【问题描述】:

因此,在 vanilla JS 中,我理解 map 运算符的方式是它遍历数组中的每个项目并在该项目上工作。所以如果我有一个数组:

 [ {...}, {...}, {...} ]

然后 .map 将遍历此数组中的每个对象,当您在其中时公开该对象的属性。

对于 RxJS,我最常看到的是:map(x=>x).map(...),因为看起来 RxJS 映射运算符实际上并没有遍历数组中的每个对象。我发现最常用的方法是简单地暴露可观察对象的内部,以便可以在其上完成其他工作。

所以我有两个问题:

  1. map(x=>x) 是否有更语义化的运算符?
  2. 为什么 RxJS 的地图与 Javascript 的地图有偏差?

【问题讨论】:

  • array.map 将函数应用于数组中的每个值。 observable.map 将该函数应用于流中的每个值。目前尚不清楚为什么您认为这不是在做同样的事情。数组数组上的映射不会展开内部数组。
  • 感谢您解决我的知识差距@jonrsharpe
  • 另外,map(x=>x) 不做任何事情,无论接收者是数组还是 Observable。
  • pipe(map(x=>x)) 是正确的方法,.map 语法已弃用
  • @danday74 我的意思是在 Observable 的结果上使用 JS 的 Array.map,很抱歉造成混淆。

标签: angular rxjs reactive-programming rxjs6


【解决方案1】:

数组是内存中的一个列表。

一个 Obserable 流是一个随时间变化的列表。

由于它们本质上都只是列表,因此它们具有非常相似的方法是有道理的。事实上,大多数数组方法都存在于流中。

请参阅文档来说明这一点:

https://angular.io/guide/comparing-observables#observables-compared-to-arrays

所以是的,流上的映射与数组上的映射几乎相同。

【讨论】:

    猜你喜欢
    • 2023-04-08
    • 2018-10-08
    • 2018-12-13
    • 1970-01-01
    • 2020-06-29
    • 2017-08-29
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    相关资源
    最近更新 更多