【发布时间】:2016-07-12 06:13:42
【问题描述】:
我有 2 个factory 函数:
工厂
factory.getCurrEmployee = function()
{
data = {"api_token": authenticationFactory.getToken()};
url = GLOBALS.url + 'show/employee/' + $cookieStore.get('employeeid');
return requestFactory.post(url, data)
.then(function (response) {
return response.data.result.Employee;
}, function () {
$window.location.assign('/');
});
}
factory.isSuperadministrator = function() {
factory.getCurrEmployee().then(function (employee) {
if(employee.Role == 'Superadministrator')
{
return true; //console.log('Superadministrator') <- that console.log is visible in my console
}
return false;
});
}
return factory;
在我的控制器中,我希望是真或假(用户是否是超级管理员),但结果什么都没有。如果我 console.log 在我的 factory.isSuperadministrator 中结果为真。
控制器
console.log(employeeFactory.isSuperadministrator());
为什么这不起作用?
【问题讨论】:
-
它是异步的。您返回的承诺不是布尔值。
-
@ste2425 那些
Boolean的值永远不会被返回,直到承诺被返回。因为boolean已经从回调函数返回。 -
@PankajParkar 是的,但是 OP 在其调用控制器代码中没有使用
.then而是在服务回调中返回预期值这一事实表明潜在地缺乏关于承诺链如何工作的知识.这就是为什么我说他返回的是一个承诺而不是他的回调中的值。 -
@ste2425 道歉.. 我误解了。虽然欢呼..我认为,OP得到了他想要的:-)
标签: javascript angularjs promise angular-promise angularjs-http