我想让当前登录的用户 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调用需要很长时间,当用户去使用它时,会话对象会被未初始化。