Можете ли да използвате обещание .then() в рамките на Angular factory?

Опитвам се да използвам обещание за връщане на обект към променливата данни, дефинирана във функцията по-долу. Работи добре, ако използвам обещанието в контролера и направя res = на $scope.data, но колкото повече си мислех, всъщност не е необходимо тази информация да има в $scope, тъй като информацията за влизане на потребителите/ID на сесията не трябва промяна.

(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