我试图了解我真正在做什么,因为我觉得我缺少一些东西。您能否指出我的某个地方或确认我的错误/理解?
request.then(function(response) {
updateCurrentUser(response.data.data);
currentUser.isAuthenticated();
});
基本上就是这样吗?
request = {
then : function (foo){
foo("first")
} }
request.then(function (response) { console.log(response) ; });
指令:
AuthenticationService.login($scope.user.email, $scope.user.password).then(function(loggedIn) {
if ( !loggedIn ) {
$scope.authError = "Login failed. Please check your credentials and try again.";
}
});
AuthenticationService 作为工厂:
login: function(email, password) {
var request = $http.post('http://', {email: email, password: password});
return request.then(function(response) {
updateCurrentUser(response.data.data);
return currentUser.isAuthenticated();
});
},
我不明白的是,loggedIn 变量的值为什么等于值 什么语句 return currentUser.isAuthenticated();返回并且不等于原始的then(function(response),因为我从 AuthenticationService 返回 promise 。 对于上面的示例,如何实现这一点?
谢谢。
最佳答案
我认为概念问题是由于您忽略了return声明而引起的。 AuthenticationService.login
所做的实际上是一个带有预定义 request 的闭包,因此您可以想象 login
被替换为其返回值 request.then(function(response) {...
。然后您可以简单地推断出整个代码行是:
AuthenticationService.login($scope.user.email, $scope.user.password).then(
function(response)
{
updateCurrentUser(response.data.data);
return currentUser.isAuthenticated();
}).then(
function(loggedIn)
{
...
这样您可能会看到响应结果应该作为下一步登录检查的输入。
关于javascript,对象,将函数作为参数传递 - Angular ,jquery 概念基本误解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14070666/