Я читал о событии, проходящем в Angularjs, и я не уверен, что использование $broadcast - хорошая идея.
Блоги вроде этого одного защитника привыкают к $, даже несмотря на то, что он "чувствует себя излишним".
Мое замешательство заключается в том, что реализация использует сквозной проход по глубине и просматривает подписчиков, что делает скорость ваших событий зависимой от вашей древовидной структуры. Вот код из этого в angular:
// Insanity Warning: scope depth-first traversal
// yes, this code is a bit crazy, but it works and we have tests to prove it!
// this piece should be kept in sync with the traversal in $digest
if (!(next = (current.$$childHead || (current !== target && current.$$nextSibling)))) {
while(current !== target && !(next = current.$$nextSibling)) {
current = current.$parent;
}
}
Кроме того, похоже, что вы сможете взломать инъекцию зависимости, используя эти методы.
Альтернативой является просто служба, которая кэширует типы событий и обратные вызовы и вызывает их напрямую. Для этого необходимо очистить подписки, чтобы избежать утечек.
Мой вопрос: есть ли что-то, что мне не хватает в мотивации парадигмы $broadcast/$? Или есть ли какая-либо польза от использования более традиционного pubsub?
Сообщите мне, если я не буду достаточно ясным с моим вопросом и благодарю за ваше время.