【发布时间】:2019-01-31 20:56:53
【问题描述】:
在 RxJS 中使用/改变自定义运算符闭包中的变量是否有缺点?我意识到它违反了“纯”功能原则,您可以在这个简单的示例中使用scan,但我特别要求以下基本模式的有形技术问题:
const custom = () => {
let state = 0;
return pipe(
map(next => state * next),
tap(_ => state += 1),
share()
)
}
// Usage
const obs = interval(1000).pipe(custom())
obs.subscribe()
【问题讨论】:
-
在什么情况下你需要它?在你的情况下,看起来只是做
next * (next + 1)会工作 -
我把这个例子做的很简单,只是为了演示这个模式。一个真正的用例是当您有需要在操作员链中的多个步骤中使用的内部状态时。
-
扫描不行吗?
-
不完全是,我几乎把它放在问题中,因为我知道它会出现。上面的“状态”是运营商内部的(从不发送给订阅者)。扫描将需要可观察的 afaik 发出数据。
标签: javascript functional-programming rxjs reactivex