我有以下 Angular 服务:
angular.module("app").factory("userService", userService);
userService.$inject = ["$http"];
function userService($http) {
return {
getAuthenticatedUserInfo: function () {
return $http.get("/api/v1/users/me");
}
}
}
我正在获取有关当前用户的信息,例如 Id、姓名...
我想在我的 Controller 中使用此信息,但我不想在每次需要该信息时调用 API (getAuthenticatedUserInfo) ...这有意义吗?
在其他 Controller 中使用此信息的最佳选择是什么?
最佳答案
在服务中创建一个局部变量并将用户存储在其中。仅当局部变量未定义时才执行 HTTP 调用。为确保您始终返回 promise ,无论本地用户是否可用,请使用 $q 的 when
函数:
angular.module("app").factory("userService", userService);
userService.$inject = ["$http", "$q"];
function userService($http, $q) {
var currentUser;
return {
getAuthenticatedUserInfo: function () {
if (currentUser){
return $q.when(currentUser);
} else {
return $http.get("/api/v1/users/me").then(function(response) {
currentUser = response.data;
return response.data;
});
}
}
}
}
PS从不使用全局变量
关于angularjs - 保存当前用户信息,并在 Controller 中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36645399/