【发布时间】:2015-01-23 10:37:32
【问题描述】:
通过阅读本教程http://reactive-extensions.github.io/learnrx/,我正在学习RxJS。
我很难理解Observable 的map 方法。 Array 版本的map 非常简单明了。我不知道在Observable 的情况下map 到底是什么意思(以及为什么它有一个名为select 的别名?!)。
这是文档告诉我的。可能对大多数初学者没有帮助...
通过合并元素的索引将可观察序列的每个元素投影到新形式中。这是 select 方法的别名。
在event 的上下文中,我不理解map。
例如,下面的代码完全符合我的预期。我认为这段代码是:“从#btn的事件流中收听click-event”。
var btnClicks, observable;
btnClicks = Rx.Observable.fromEvent($('#btn'), "click");
observable = btnClicks.subscribe(function(e) {
console.log(e);
});
但是当它变成这样时会发生什么?
var btn2Clicks, btnClicks, observable;
btnClicks = Rx.Observable.fromEvent($('#btn'), "click");
btn2Clicks = Rx.Observable.fromEvent($('#btn2'), "click");
observable = btnClicks.map(function(e) {
return btn2Clicks;
}).subscribe(function(e) {
console.log(e);
});
我的想法是使用map 将点击事件的集合转换为另一个事件集合的集合。
filter 很容易理解,就像filter 的意思一样,只参加我感兴趣的活动,跳过其他活动。但是map 在event 的上下文中呢?如果它意味着像数组版本一样“将一个集合转换为另一个集合”,为什么在点击#btn 时它仍然会触发?
我的意思是我已经将它映射到另一个集合,现在它不再是 #btn 的点击事件的集合,但它是一个新的集合...但是当 #btn 被点击时它仍然会触发对我有感觉。
【问题讨论】:
标签: javascript rxjs