とても良い質問です。
イベントハンドラは初期化順に実行されます。
私のハンドラーはどちらが最初に実行されるかを知る必要がなかったため、これについてはこれまであまり考えたことがありませんでしたが、フィドルを見ると、ハンドラーが初期化されたのと同じ順序で呼び出されていることがわかります。
あなたのフィドルにはcontrollerA、2つのサービスに依存するコントローラーがServiceAありServiceBます。
myModule
.controller('ControllerA',
[
'$scope',
'$rootScope',
'ServiceA',
'ServiceB',
function($scope, $rootScope, ServiceA, ServiceB) {...}
]
);
サービスとコントローラーの両方がイベント リスナーを定義します。
ここで、注入する前にすべての依存関係を解決する必要があります。つまり、両方のサービスがコントローラーに注入される前に初期化されます。したがって、サービス ファクトリはコントローラーの前に初期化されるため、サービスで定義されたハンドラーが最初に呼び出されます。
次に、サービスが注入された順序で初期化されることも確認できます。Soは、その順序でコントローラーに注入されるため、ServiceA前に初期化されます。ServiceBコントローラー署名内で順序を変更した場合、初期化順序も変更されていることがわかります ( のServiceB前に来ますServiceA)。
そのため、サービスが初期化された後、コントローラーも初期化され、それとともに、内部で定義されたイベント ハンドラーも初期化されます。
したがって、最終結果は、$broadcast では、ハンドラーは次の順序で実行されます:ServiceAハンドラー、ServiceBハンドラー、ControllerAハンドラー。