javascript,对象,传递函数作为参数与参数 - 角度,jquery概念基本的误解

时间:2012-12-28 14:02:02

标签: javascript jquery oop object angularjs

我试图理解我在做什么,因为我觉得我缺乏某些东西。你能指点我或证实我的错误/理解吗?

request.then(function(response) {
        updateCurrentUser(response.data.data);
        currentUser.isAuthenticated();
      });

基本上是这个吗?

request = {
    then : function (foo){
        foo("first")
    } }

request.then(function (response) { console.log(response) ; });

如果您看到完整代码here#35和here#63

指令:

    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。 对于上面的例子,如何实现这一目标?

谢谢。

1 个答案:

答案 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)
{
  ...

通过这种方式,您可能会看到响应结果应作为下一步登录检查的输入。