我正在学习RxJSKoans,发现一个反复出现的模式,即向结果数组中添加数据,订阅者会推送新值:
var Rx = require('rx'),
Subject = Rx.Subject
var result = [];
var s1 = new Subject();
s1.subscribe(result.push.bind(result));
s1.onNext('foo');
result; // ['foo']
这显然是一个不纯的函数;
result
数组被subscribe改变了。我看过一些在Github上的小型项目,它们试图使用Immutable.js解决这个问题,但没有一个得到积极维护。
我想知道是否有广泛采用的不可变实现模式,如果没有,为什么?
map
运算符内,返回值为data.toJS()
,然后再用另一个运算符Immutable.fromJS(data)
。不过这种情况并不经常发生。 - Marcus Rådell