【问题标题】:RxJs noop and Identity functionsRxJs noop 和 Identity 函数
【发布时间】:2023-03-11 11:02:02
【问题描述】:

我现在正在学习 RxJs,遇到了两个函数,它们是他们的助手库的一部分

Rx.helpers.identity(x)

Rx.helpers.noop() 

According to the RxJs Helpers documentation 对于 Rx.helpers.identity(x),文档说这是一个函数,它只返回未经修改的传递给它的值。对于 Rx.helpers.noop,他们说这个函数真的什么都不做。

问:提供这些功能的目的是什么,在什么场景下使用这些功能有用?

【问题讨论】:

  • 它们的使用并不特定于RxJS。在组合函数时,它们在不同的上下文中很方便。具有单一的定义位置可以节省一些堆空间;但在大多数情况下,临时创建的函数就足够了。

标签: rxjs rxjs5


【解决方案1】:

我使用身份的一个常见用例是当我必须“解包”来自不同库/API 的可观察对象的内容时,例如:

names$ // Observable<Observable<string>> 
  .flatMap( Rx.helpers.identity )// Observable<string>
  .subscribe( (name: string) => console.log(name) )

这些函数在处理函数流时变得更加有用,这是 FRP 中相当常见的做法(redux 是最明显的例子),在这种情况下,您的操作有效地映射到采用您之前的状态和退回新的。

更有趣的是noopidentity 可以起到非常相似的作用,具体取决于您的数据是否不可变。

[编辑] 通常您可以将observable.flatMap( identity ) 替换为switch 运算符,如:observable.switch()

【讨论】:

    猜你喜欢
    • 2020-10-31
    • 1970-01-01
    • 2020-01-25
    • 2015-12-12
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-11
    相关资源
    最近更新 更多