使用rxjs的可拖动组件实现

时间:2018-05-29 14:04:58

标签: rxjs rxjs6

我将可拖动组件的实现从rxjs5移动到6.测试时我注意到偶尔不调用函数onDragEnd。这可能是什么原因?这是代码:

    fromEvent(this.ref,"mousedown")
        .pipe(
            filter(this.inside),
            debounceTime(300),
            tap((event) => { 
                this.onDragStart(event); 
            }),
            exhaustMap(() => 
                fromEvent(document.body,"mousemove")
                .pipe(
                    takeUntil(
                        fromEvent(document.body,"mouseup")
                        .pipe(tap(this.onDragEnd)) // <--- my problem
                    )
                ) 
            )
        ) 
        .subscribe( 
            (event) => { 
                this.onDragMove(event);
            },
            this.onError
        )

编辑:只是为了澄清我的期望,mousedown事件应该映射到observable(假设我正确理解exhaustMap)不应该允许外部observable再次发射直到内部observable完成。我无法理解为什么在20-30次onDragEnd之一中没有被解雇,可以从文档中观察到,因为我的直觉告诉我鼠标在这种情况下是不可避免的,我错了吗?如果你对这个实现有什么可能出错的想法,请告诉我,谢谢!

0 个答案:

没有答案