我有以下函数。它不起作用,但其思想是,如果已经设置了sessionStorage
变量,则使用它。如果没有,则调用API,然后为下次设置sessionVariable
。
isAdmin: function() {
// hit the first page, or refreshed.
if(sessionStorage.getItem("isAdministrator") === null) {
AzureGroupService.get({adGroup: "Programmers"}).$promise.then(function (data) {
sessionStorage["isAdministrator"] === data.isMember;
return data.isMember;
});
}
else {
return JSON.parse(sessionStorage["isAdministrator"]);
}
}
所以函数可能会立即返回,或者它可能需要等待API。这样做是正确的吗?
如果是,我该如何在控制器中调用它?像这样的?
user.isAdmin().then(function(response) {
vm.test = response.data;
});
如果sessionStorage对象不为空,则可以使用$q.when()。你的isAdmin()函数应该是这样的。
isAdmin: function() {
// hit the first page, or refreshed.
if(sessionStorage.getItem("isAdministrator") === null) {
return AzureGroupService.get({adGroup: "Programmers"}).$promise.then(function (data) {
sessionStorage["isAdministrator"] === data.isMember;
return data.isMember;
});
}
else {
return $q.when(JSON.parse(sessionStorage["isAdministrator"]));
}
}
你的控制器应该是这样的,isAdmin()函数总是返回一个promise。因此,你可以使用.then()定义一个成功回调。
user.isAdmin().then(function(response) {
vm.test = response.data;
});