我试图理解我在做什么,因为我觉得我缺乏某些东西。你能指点我或证实我的错误/理解吗?
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 as factory:
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();
});
},
我不明白的是,为什么recordIn变量的值等于值什么语句返回currentUser.isAuthenticated();返回并且不等于然后(原始的函数(响应),因为我从AuthenticationService返回promise。 对于上面的例子,如何实现这一目标?
谢谢。
答案 0 :(得分:2)
我认为构思的问题源于你忽略了 return 语句。 AuthenticationService.login
实际上是一个具有预定义请求的闭包,因此您可以设想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)
{
...
通过这种方式,您可能会看到响应结果应作为下一步登录检查的输入。