Задать вопрос

Как связать angular-сервис с внешним асинхронным модулем?

Есть angular-приложение и отдельный модуль, предположим flash-библиотка видеоплеера
FlashVideo.onTimeChange = function(currentTime){ /* doSomething */ }

Как это правильно реализовать с точки зрения angular архитектуры и производительности? Действия в функции несложные, но так или иначе завязанные на angular-приложение, плюс функция вызывается довольно часто (несколько раз в секунду).

Пока что приходят несколько идей, но все они мне кажутся костылями, либо плохими с точки зрения производительности.
1) использовать $watch на $rootScope
2) notify через promise
3) события $emit, $broadcast
  • Вопрос задан
  • 240 просмотров
Подписаться 3 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
использовать $watch на $rootScope

у вас там событие запускается, а не состояние объекта меняется. Хватит везде и всюду пихать ватчи

notify через promise

Он не для этого. Он для того что бы уведомить что скоро будет resolve.

события $emit, $broadcast

именно так. Можно сделать свой изолированный скоуп что бы гонять события только между двумя компонентами, не затрагивая остальную систему.
Ответ написан
AMar4enko
@AMar4enko
В дополнение к ответу Сергей Протько - используйте throttling на событии
Ответ написан
@Demetros
Вам при каждом вызове этой функции надо что-то обновлять в приложении?
Нельзя ли вызывать digest не при каждом вызове, а например раз в секунду?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы