【问题标题】:Can you use a promise .then() within an Angular factory?你可以在 Angular 工厂中使用 promise .then() 吗?
【发布时间】:2015-11-22 05:30:32
【问题描述】:

我正在尝试使用 promise 将对象返回到下面函数中定义的数据变量。如果我在控制器中使用 promise 并将 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 控制台显示为空对象。我正在尝试的可能/明智吗?

【问题讨论】:

    标签: angularjs promise


    【解决方案1】:

    您将 data 定义为空对象

     //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); 
    

    难怪它记录一个空对象

    【讨论】:

      猜你喜欢
      • 2019-09-28
      • 1970-01-01
      • 2015-03-19
      • 2014-05-03
      • 1970-01-01
      • 2016-06-29
      • 1970-01-01
      • 2021-04-22
      • 1970-01-01
      相关资源
      最近更新 更多