Jestem nowy w kanciaste i spotkać catch-22:kątowe JS - komunikować się między usługami non-dependend
fakty:
mam usługę, która rejestruje moje rzeczy (my- rejestrator).
jakie otrzymuje $ ExceptionHandler (kątowa) z własnej implementacji który przekazuje niezłapane wyjątki serwisowego my-logger
mam inną usługę popychacza-Service, który musi być powiadomiony, ilekroć fatalna wiadomość ma być logowana gdzieś w mojej aplikacji za pomocą "my-logger".
Problem:.
nie mogę mieć '' my-logger można polegać 'popychacz', ponieważ stworzy to zależność cykliczna (jako 'popychacz' używa $ http Krąg: $ ExceptionHandler -> my-logger -> pchacz -> $ http -> $ ExceptionHandler ...)
Moje próby:
aby te 2 usługi komunikują się ze sobą, chciałem użyć $ watch w usłudze pusher: obserwuje właściwość na $ rootscope, która zostanie zaktualizowana w my-logger. Ale gdy próbujemy zużyć $ rootScope w 'moim-loggerze', aby zaktualizować właściwość, na której "zegarmistrz" "obserwuje", nie działa zależność cykliczna, ponieważ okazuje się, że $ rootscope zależy od $ ExceptionHandler (circle: $ ExceptionHandler -> my-logger -> $ rootScope -> $ ExceptionHandler).
Próbowano znaleźć opcję, aby w czasie wykonywania uzyskać obiekt zakresu, który działa w jego kontekście jako usługa "mój logger". nie mogę znaleźć takiej opcji.
Nie można również używać transmisji, ponieważ wymaga ona, aby mój logger uzyskał dostęp do zakresu ($ rootScope) i jest to niemożliwe, jak pokazano powyżej.
Moje pytanie:
Czy istnieje sposób mieć kątowe dwóch usług komunikować poprzez 3rd podmiotowi strony?
Każdy pomysł, jak można to rozwiązać?
Nie, nie mogę. "mój-logger" nie może używać $ rootScope, ponieważ $ rootScope sam zależy od $ ExceptionHandler, który doprowadzi do zależności cyklicznej ($ ExceptionHandler -> "my-logger" -> $ rootScope -> $ ExceptionHandler). Jak stwierdzono w oryginalnym komunikacie, nie można użyć żadnej z możliwości tego zakresu: rozgłaszanie, emitowanie, oglądanie ... ponieważ "mój logger" nie może mieć do niego żadnego dostępu z powodu zależności cyklicznej. –