【发布时间】:2016-10-10 02:00:19
【问题描述】:
我正在尝试自学一些反应式函数式编程。这个来自 Ben Lesh 的 video 展示了一个 observable 的例子。我之前的阅读表明 observable 是惰性的,即它仅在订阅后才进行评估。奇怪的是,此代码不需要订阅即可打印到控制台。
var Rx = require('rxjs/Rx')
var source = Rx.Observable.from([1,2,3,4,5]);
var newSource = source.filter(x => x % 2 === 1)
.map(x => x + '!')
.forEach(x => console.log(x));
来自RxJS docs:
似乎 Observable 必须积极解决 .forEach 发出的承诺,我很对此感到困惑。
进一步的混乱源于这段代码:
var Rx = require('rxjs/Rx')
var source = Rx.Observable.from([1,2,3,4,5]);
var newSource = source.filter(x => x % 2 === 1)
.map(x => x + '!')
.do(x => console.log(x));
在运行newSource.subscribe(); 之前不会评估,请帮我解释一下这两个运算符背后的区别。
【问题讨论】:
标签: javascript functional-programming rxjs frp rxjs5