私はAngularが初めてで、catch-22に遭遇しました:
事実:
自分のものをログに記録するサービス (my-logger) があります。
$ExceptionHandler (Angular の) を、キャッチされていない例外を my-logger サービスに転送する独自の実装に置き換えました。
「my-logger」を使用してアプリケーションのどこかに致命的なメッセージが記録されるたびに通知する必要がある別のサービス、プッシャーサービスがあります。
問題:
'my-logger' を 'pusher' に依存させることはできません。循環依存関係が作成されるためです ('pusher' は $http を使用するため)。円: $ExceptionHandler -> my-logger -> pusher -> $http -> $ExceptionHandler...)
私の試み:
これら 2 つのサービスが相互に通信できるようにするために、プッシャー サービスで $watch を使用したいと考えました。my-logger で更新される $rootscope のプロパティを監視します。しかし、「my-logger」で $rootScope を使用しようとすると、「プッシャー」が「監視」するプロパティを更新するために、循環依存関係で失敗します。これは、$rootscope が $ExceptionHandler (円: $ExceptionHandler -> my-logger -> $rootScope -> $ExceptionHandler)。
実行時に、そのコンテキストで「my-logger」サービスが機能するスコープ オブジェクトを取得するオプションを見つけようとしました。そのようなオプションが見つかりません。
my-logger がスコープ ($rootScope) にアクセスする必要があり、上記のように不可能であるため、ブロードキャストも使用できません。
私の質問:
2 つのサービスがサード パーティのエンティティを介して通信する角度のある方法はありますか?
これをどのように解決できるか考えていますか?