我在mousedown上设置了两个简单的事件处理Observable。
Mouseup会在应用程序中触发多个操作,具体取决于该元素是否在mousemove上移动,因此我需要在简单点击时阻止它。
我的印象是,只有在跳过500次鼠标移动并且发出一次鼠标移动之后,此代码才会开始启动鼠标,但是,即使没有单个“mousemove”被记录,也会立即记录“mouseup”,即使设置了skip()甚至更荒谬的数字。)
我错过了什么?
var mouseupObservable = Observable.fromEvent(this.element, 'mouseup');
var mouseMoveObservable = Observable.fromEvent(window, 'mousemove');
mouseupObservable
.skipUntil(mouseMoveObservable)
.subscribe(()=>console.error('mouseup'));
mouseMoveObservable
.takeUntil(mouseupObservable)
.skip(500)
.subscribe(()=>console.error('mousemove'));
答案 0 :(得分:1)
问题是你使用" raw"跳过里面的溪流,试试这个:
var mouseupObservable = Observable.fromEvent(this.element, 'mouseup');
var mouseMoveObservable = Observable.fromEvent(window, 'mousemove');
let mouseUp$ = mouseupObservable
.skipUntil(mouseMoveObservable.skip(500));
mouseUp$.subscribe(()=>console.error('mouseup'));
let mouseMove$ = mouseMoveObservable
.takeUntil(mouseUp$);
mouseMove$.subscribe....
但请记住," takeUntil(...)"将完成您的流...这意味着这将只适用于单个"移动点击周期" - 不确定这是不是你的意图。