【发布时间】:2013-07-12 20:02:42
【问题描述】:
我正在尝试基于另外两个创建新的 observable。我有:
var mouseClickObservable = Rx.Observable.fromEvent(this.canvas, "click");
var mouseMoveObservable = Rx.Observable.fromEvent(this.canvas, "mousemove");
function findObject(x, y) {/* logic for finding object under cursor here. */}
var objectUnderCursor = this.mouseMoveObservable.select(function (ev) {
return findObject(ev.clientX, clientY);
});
我想创建 objectClicked observable,它应该在用户点击一个对象时产生值。我可以再次调用 findObject,如下所示:
var objectClicked = this.mouseClickObservable.select(function (ev) {
return findObject(ev.clientX, clientY);
});
但这是非常耗时的功能。
我目前使用的另一种方法是将最后一个悬停对象存储在变量中,但我认为应该有纯函数式的方法来执行此操作。我尝试像这样使用 Observable.join:
var objectClicked = this.objectUnderCursor.join(
mouseClickObservable,
function (obj) { return this.objectUnderCursor },
function (ev) { return Rx.Observable.empty() },
function (obj, ev) { return obj })
但它一键生成多个值
【问题讨论】:
标签: system.reactive reactive-programming reactive-extensions-js