По сути, «многоадресная рассылка» означает совместное использование одной подписки на источник, наблюдаемый среди нескольких наблюдателей.В RxJS это всегда выполняется с помощью оператора multicast()
, который внутренне использует экземпляр субъекта.
Субъекты - это объекты, которые одновременно работают как в режиме наблюдения, так и в качестве наблюдателя.Поэтому, как правило, вы будете использовать субъекты для создания пользовательских событий, когда захотите:
const s = new Subject();
s.next();
s.complete();
... но вы можете использовать его, чтобы подписаться на другой наблюдаемый объект, а затем подписаться на этот предмет несколько раз, что одно и то же.как это делает многоадресная рассылка:
const s = new Subject();
const source = ... // Observable
source.subscribe(s);
s.subscribe(...);
s.subscribe(...);
s.subscribe(...);
Таким образом, существует только одна подписка на source
и 3 подписки (на наблюдателей) на s
, таким образом, вы осуществляете многоадресную рассылку с source
на 3 наблюдателя.