Клуб API Карт

Обновляются ли события?

mister.smu
3 марта 2015, 14:12

Вешаю несколько обработчиков событий на метки в менеджере объектов, а также на саму карту. Но не удаляю повешенные ранее. Будет ли происходить какое-то дублирование (к примеру как в случае нескольких setTimeout-ов?). Примерный код такой, он вызывается несколько раз в течении определенного времени(переинициализация)

objectManager.objects.events.add('click', function (e) {....}

Отсюда вопрос- не скажется ли это на быстродействии, и надо ли удалять прежние евенты перед навешиванием новых?

При тестировании нашел что они не дублируются(ураа!), но может быть существуют потери в производительности?

 

1 комментарий
Подписаться на комментарии к посту
Всеволод Шмыров
3 марта 2015, 16:20
Добрый день. Да. Дублирование будет происходить, как и в случае с подпиской на DOM события у HTML элемента. Предыдущие подписка нужно удалять. Как вариант, можно использовать группу подписок.
https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/reference/IEventManager-docpage/#group
Группы удобно тем, что при помощи них можно удалить множество подписок без указания callback'ов.

>> При тестировании нашел что они не дублируются(ураа!),
В памяти остаются висеть старые подписки. Каждая функция имеет собственную область видимости. В общем, без отписок на события будет происходить "утечка памяти".