我现在正在学习RxJs并且正在跟随两个函数,这些函数是他们帮助程序库的一部分
Rx.helpers.identity(x)
和
Rx.helpers.noop()
According to the RxJs Helpers documentation 对于Rx.helpers.identity(x),文档说这是一个函数,它只返回未经修改的传递给它的值。对于Rx.helpers.noop,他们说这个函数什么也没做。
问:提供这些功能的目的是什么?在哪种情况下使用这些功能很有用?
答案 0 :(得分:0)
我使用身份的一个常见用例是当我必须"展开"来自不同库/ API的可观察量的内容,例如:
names$ // Observable<Observable<string>>
.flatMap( Rx.helpers.identity )// Observable<string>
.subscribe( (name: string) => console.log(name) )
这些函数在处理函数流时变得更有帮助,这在FRP中是一种相当普遍的做法(redux将是最明显的例子),有效地将您的操作映射到以前的函数陈述并返回新的。
更有意思的是noop
和identity
可以起到非常相似的作用,具体取决于您的数据是否不可变。
[编辑]通常,您可以将observable.flatMap( identity )
替换为switch
运算符,如:observable.switch()
。