Javascript承诺链接
Javascript promise chaining
我很难理解如何链接承诺。我正在为我的应用程序编写登录功能,利用环回的Angular SDK。在验证用户的凭据之后,目标是确认用户的帐户是活动的,然后获取一些额外的属性,包括用户的角色,如果用户具有管理员权限,则将标志设置为true。
这是我的代码…
$scope.login = function (user) {
User.login(user).$promise.then(
function (data) {
$rootScope.activeUser = data;
$rootScope.user_id = $rootScope.activeUser.user.username;
console.log('Active User: ', $rootScope.activeUser.user.email);
console.log('Status: ', $rootScope.activeUser.user.status);
if ($rootScope.activeUser.user.status === 'Y') {
$scope.loginError = false;
function checkAdmin(eid) {
Se_user.findById({
id: eid
}).$promise.then(
function (data1) {
var user_properties = data1;
if (user_properties.role === 'Admin') {
$rootScope.isAdmin = true;
console.log('isAdminInside: ', $rootScope.isAdmin);
return true;
} else {
//$rootScope.isAdmin = false;
return false;
}
});
};
var isAdmin = checkAdmin($rootScope.user_id);
console.log('isAdminOutside: ', $rootScope.isAdmin);
$state.go('home');
} else {
$scope.loginError = true;
$scope.loginErrorMessage = "Your account has been disabled. Please contact BMT Support for assistance";
}
},
function (err) {
console.log('Error: ', err)
$scope.loginError = true;
$scope.loginErrorMessage = "You've entered an invalid User ID or Password. Please try again.";
});
};
我一直在通过写入控制台来进行故障排除,下面是输出的示例…
Active User: user@email.com
Status: Y
isAdminOutside: undefined
isAdminInside: true
我应该如何重组,以便在活动用户成功登录后正确返回checkAdmin的结果?
尝试修改这部分代码:
function checkAdmin(eid) {
return Se_user.findById({
id: eid
}).$promise.then(
function(data1) {
var user_properties = data1;
if (user_properties.role === 'Admin') {
$rootScope.isAdmin = true;
console.log('isAdminInside: ', $rootScope.isAdmin);
return true;
} else {
//$rootScope.isAdmin = false;
return false;
}
});
};
var isAdmin = checkAdmin($rootScope.user_id)
.then(function(val) {
console.log('isAdminOutside: ', val);
$state.go('home');
});
相关文章:
- $q.reject和处理AngularJS链接承诺中的错误
- 关于用 angular 和打字稿链接$q承诺的困惑
- 链接承诺和传递价值的简洁方式
- 从 foreach 循环链接承诺
- 用q.js链接承诺
- 链接承诺而不使用“then”
- 如何链接承诺
- 正确链接承诺
- Angular中的链接承诺.输入参数错误
- JavaScript链接承诺来自for循环中的LocalForage
- 从链接承诺返回数据
- Parse.Query.each()链接承诺
- JavaScript链接承诺:在上一个承诺完成之前调用下一个承诺
- 在角度 js 中链接承诺
- 在纯javascript中链接承诺
- JavaScript承诺:链接承诺混淆
- AngularJS:这是链接承诺的正确方法吗?
- 用JavaScript Trello API链接承诺
- ES6动态链接承诺
- 在parse - Swift中链接承诺