javascript,对象,将函数作为参数传递 - Angular ,jquery 概念基本误解

标签 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 作为工厂:

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/

相关文章:

javascript - 当键相同时合并 2 个对象值

javascript - 在 javascript 闭包中测试

php - 如何在另一个类中创建一个类的实例

javascript - 更改 React 组件的顺序仅在第二次单击后触发重新渲染

javascript - jcarousel,我需要 :active state on external controls

javascript - 使用 jQuery 将输入 TITLE 显示为 VALUE(包括 jsfiddle)

javascript - Jquery 按键除了 : {something}

python - 类/静态变量是否可以访问静态方法?

java - 从动态数组中检索元素

java - 图像未加载到 WEB-INF 文件夹中?