Можете ли вы использовать обещание .then() в фабрике Angular?

Я пытаюсь использовать обещание вернуть объект в переменную данных, определенную в функции ниже. Он отлично работает, если я использую промис в контроллере и делаю res = to $scope.data, но, чем больше я думал, на самом деле нет необходимости иметь эту информацию в $scope, так как информация о входе пользователя/идентификатор сеанса не должна сдача.

(function(){
    'use strict';

angular.module('csMgmtApp')
    .factory('agentFactory', ['$http', function($http){

     //other variables set successfully by another method

        var data = {},
            result = {},
            access_token = result.access_token,
            baseURIc = result.resource_server_base_uri;


       function startSession(startSessionPayload){
            var startSessionPayload = startSessionPayload,
                access_token = result.access_token,
                baseURIc = result.resource_server_base_uri;

            return $http({
                'url': baseURIc + 'services/v6.0/agent-sessions',
                'method': 'POST',
                'headers': {'Authorization': 'bearer ' + access_token, 'content-Type': 'application/json'},
                'data': startSessionPayload
            }).then(function(res){
                res = data;
                console.log("sessionId", res);
            });
        }
          return {startSession:startSession};
}]);

})();

Проблема в том, что при попытке сделать это на фабрике res выводится как пустой объект. То, что я пытаюсь сделать, возможно/разумно?


person someoneHere    schedule 21.11.2015    source источник


Ответы (1)


вы определяете данные как пустой объект

 //other variables set successfully by another method

    var data = {}, // <-- here

а затем после того, как вы установите res как data (пустой объект)

            res = data; // <-- data is defined as empty object above
            console.log("sessionId", res); 

неудивительно, почему он регистрирует пустой объект

person Endless    schedule 21.11.2015