Перетаскиваемая реализация компонента с помощью rxjs - PullRequest
0 голосов
/ 29 мая 2018

Я переместил реализацию перетаскиваемого компонента с 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 должно быть сопоставлено с наблюдаемым, которое (при условии, что я правильно понял выхлопную карту) не должно позволять внешнему наблюдаемому излучению снова, пока не завершится внутренняя наблюдаемая,Что я не могу понять, так это почему в 20-30 раз onDragEnd не запускается, это можно наблюдать из документа, так что моя интуиция, говорящая мне, что мышка в этом случае неизбежна, я ошибаюсь?Если у вас есть идеи, что может быть не так с этой реализацией, пожалуйста, дайте мне знать, спасибо!

...