不能很好地玩我想学习Rxjs,我看到一些我没想到的行为。有问题的JavaScript代码如下RxJS与Math.random()
function updateText(css_link, observable){
observable.subscribe(x => {
const container = document.querySelector(css_link);
container.textContent = `${x}`;
});
}
function log(observable) {
observable.subscribe(i => {
console.log(i);
});
}
let source = Rx.Observable.timer(0, 1000)
.map(() => {return {value: Math.random()}});
let double = source
.map(x => {return {value: x.value * 2}});
let diff = source
.pairwise()
.map(a => JSON.stringify(a));
updateText("#source", source.map(x => x.value));
updateText("#double", source.map(x => x.value));
updateText("#diff", diff);
所列事实证明,在double
流的输出是新的随机数,而不是从source
附带的随机数字双重价值。在查看diff
的输出时,我再次得到这样的印象:随机数在source
,double
和diff
中独立生成。
我正在学习Rxjs,我可能会错过一个观点。我认为这些流是不可改变的,但它们确实相互依赖。
你可以在jsbin上找到这个代码的一个版本,它具有一些正在更新的html。