我现在正在学习RxJ,我遇到了以下两个函数,这两个函数是帮助器库的一部分
Rx.helpers.identity(x)和
Rx.helpers.noop() 对于Rx.helpers.identity(x),文档说这是一个函数,它只返回传递给它的未修改的值。对于Rx.helpers.noop,他们说这个函数实际上什么也做不了。
问:提供这些函数的目的是什么,在什么情况下使用这些函数是有用的?
发布于 2017-03-04 01:45:17
我使用identity的一个常见用例是,当我必须“展开”来自不同库/API的可观察对象的内容时,例如:
names$ // Observable<Observable<string>>
.flatMap( Rx.helpers.identity )// Observable<string>
.subscribe( (name: string) => console.log(name) )这些函数在处理函数流时变得更有帮助,这在FRP中是相当常见的做法(redux将是最明显的例子),有效地将您的操作映射到获取您以前的状态并返回新状态的函数。
更有趣的是,noop和identity可以服务于非常相似的目的,取决于您的数据是不是不可变的。
编辑通常您可以用switch运算符替换observable.flatMap( identity ),如:observable.switch()。
https://stackoverflow.com/questions/35593808
复制相似问题