コントローラーが外部イベント ソースにサブスクライブできるようにしたいのですが、これは通常次のように定義します。
var source = new EventSource('http://someURL.com/foo');
source.addEventListener('bar', handler, false);
ここで、私が使用している API には適切なイベントが 1 つしかないとしますが、そのイベントは、実際のイベントが何であるかに応じて異なる文字列を返します。したがって、私のハンドラーは次のようになります。
var handler = function(data) {
switch(data.cmd) {
case 'alpha' : doSomething(); break;
case 'beta' : doSomethingElse(); break;
case 'cappa' : doAnotherThing(); break;
}
}
残念なことですが、それが実装されている方法です。私が望むのは、理にかなったサービス API を公開できるようにすることです。そのため、コントローラーでは、各タイプのイベントを個別にサブスクライブし、1 回または繰り返しサブスクライブしたり、サブスクライブを解除したりできます。
これは理にかなっていますか?$q API を使用して行方不明になっているこれを行うためのより良い方法はありますか? そうでない場合、非同期イベントを AngularJS サービス API にマッピングするにはどうすればよいですか?