Привет.
Посмотри пожалуйста здесь ->
https://refactoring.guru/ru/design-patterns/observ...
Если ты пишешь это не в образовательных целях, советую воспользоваться библиотечкой которая реализует такой функционал.
https://rxjs-dev.firebaseapp.com/guide/overview