我将可拖动组件的实现从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之一中没有被解雇,可以从文档中观察到,因为我的直觉告诉我鼠标在这种情况下是不可避免的,我错了吗?如果你对这个实现有什么可能出错的想法,请告诉我,谢谢!