現在ログインしているユーザーの ID とユーザー名を Angular ディレクティブで使用できるようにしたいと考えています。この情報を (他の情報と共に) 取得するための API エンドポイントを作成しました。
問題は、API 呼び出しが非同期であることです。
var url = baseUrl + 'api/sessions';
$http.get(url)
API によって返される JSON オブジェクトを返すファクトリを作成しようとしています。ただ、呼び出しが非同期なのでファクトリーメソッドの実装方法がわかりません。
さらに、値が API から返されるまでディレクティブをインスタンス化したくありません。非同期呼び出しが最初に返されたことを確認するメカニズムが AngularJS に組み込まれていますか、それともグローバル オブジェクトを作成し、呼び出しが返されたときに (JSON オブジェクトを使用して) その値を更新する必要がありますか?
これは私が現在持っているものです:
application.factory('session', ['$http', 'baseUrl', function ($http, baseUrl) {
var session = {};
var url = baseUrl + 'api/sessions';
var promise = $http.get(url)
.success(function (data) {
for (var key in data) {
session[key] = data[key];
}
});
return session;
}]);
問題は、依存ディレクティブが、セッション オブジェクトが読み込まれる前にそれを取得していることです。API 呼び出しに時間がかかると、ユーザーが使用するときにセッション オブジェクトが初期化されていないことが懸念されます。