D3 "MouseMove" замедление - PullRequest
1 голос
/ 04 марта 2020

У меня есть приложение Angular и я использую D3 с SVG.

Внутри есть событие "mousemove".
Приложение пока что сложное, но все работало нормально.

Теперь событие "mousemove" D3 замедляет все приложение, даже без каких-либо логи c. Все внесенные изменения не имеют ничего общего с этим, где все довольно просто.

d3
 .select(this.svg.nativeElement)
 .on('mousemove', function() {});

Этого достаточно, чтобы замедлить его.

Профилировщик Chrome показывает мне много и длинных "движений мыши "казни. Но большую часть времени он должен быть бездействующим.

Ожидаемый (более старая версия): Expected profile

Ток: Current profile

Не могу найти причину этого и могу использовать любой намек, где искать эту проблему?

1 Ответ

1 голос
/ 05 марта 2020

Интересен тот факт, что при закрытии консоли разработчика производительность очень хорошая.

В любом случае, решение было поместить ее вне зоны Angular (спасибо @ alt255).

вот так:

constructor(private ngZone:NgZone) {}

...

 this.ngZone.runOutsideAngular(() => {

 d3
 .select(this.svg.nativeElement)
 .on('mousemove', function() {});   

 });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...