同步AngularJS $ http调用

时间:2015-12-20 15:42:23

标签: angularjs

我的Angular应用程序中有一项服务,负责授权用户并返回auth令牌。

但是,由于$ http的异步特性,我无法正确隔离我的服务逻辑。相反,我必须返回一个承诺并推动将响应解释为服务调用者的逻辑(单一责任红旗)。

鉴于此,这让我重新考虑我是否正确地思考这个问题。我来自一个Java世界,大多数交互是同步的,所以当我尝试构建一个单一责任的简洁设计时,某些东西并不适合我。

我在这里缺少什么?

更新 我意识到下面的内容不会按预期工作,但我想到了我至少可以这样做:

app.service('AuthenticationService', ['$http', '$httpParamSerializerJQLike', function($http, $httpParamSerializerJQLike)
{
    this.authServerBaseURL = "...";
    this.clientId = "...";

    this.authenticate = function(username, password)
    {
        var config =
        {
            headers:
            {
                "Content-Type"  : 'application/x-www-form-urlencoded',
                "Authorization" : "Basic " + btoa(this.clientId + ":")
            }
        }

        var body = $httpParamSerializerJQLike(
        {
            grant_type : "password",
            username : username,
            password : password
        });

        return $http.post(this.authServerBaseURL + '/oauth/token', body, config).
            success(function(data, status, headers, config)
            {               
                return data.access_token;
            }).
            error(function(data, status, headers, config)
            {
                return false;
            });    
    }

}]);

0 个答案:

没有答案