AngularJS - 服务返回值

时间:2016-01-07 14:19:59

标签: angularjs wordpress cookies

我有一个使用JSON用户API wordpress插件的应用程序。 我有这项服务来验证用户cookie。首先我调用一个用于cookie名称的API,然后我尝试验证cookie。

angular.module('app').service('AuthService', AuthService);

AuthService.$inject = ['$http'];
function AuthService($http) {
return {
    isAuthenticated: isAuthenticated
};
function isAuthenticated(){
    return $http.get('http://somesite/pCookie.php')
      .then(function (response) {
        var authCookieName = response.data.response;
        var authCookie = getCookie(authCookieName);
        var validity;            
        $http.get('http://somesite/api/user/validate_auth_cookie/?cookie='+authCookie)
            .then(function (response) {
                validity = response.data; 

            });

        return validity;
    });
}
}

问题是: 有没有提供LOGGED_IN_COOKIE cookie名称的其他方法? 由于嵌套函数,有效性未定义。我该如何解决?

1 个答案:

答案 0 :(得分:1)

因为$http.get中的第一个isAuthenticated会返回一个承诺,所以您应该这样做:

function isAuthenticated() {
  return $http.get('http://somesite/pCookie.php')
    .then(function (response) {
      var authCookieName = response.data.response;
      var authCookie = getCookie(authCookieName);
      return authCookie;
    })
    .then(function (authCookie) {
      return $http.get('http://somesite/api/user/validate_auth_cookie/?cookie='+authCookie);
    })
    .then(function (response) {
      return response.data;
    });
}