var = $ http和return $ http之间的区别

时间:2015-10-27 21:57:10

标签: angularjs http resolve

我试图理解我工厂中这两个http调用之间的区别:

One: function(code) {
       return $http.get('api/team/' + code)
         .then(function(resp) {
            return resp.data;
          });
        }
     }

Two: function(code) {
       var promise = $http.get('api/team/' + code);
        promise.then(function(resp) {
          return resp.data;
        });
          return promise;
     }

如果我在Two中的resolve使用config

resolve: {
   testt: ['$route','MyService',
          function($route, MyService) {            
          return MyService.Two($route.current.params.code);
          }]
}

然后我可以看到ng-view中的数据。如果我使用One,我就会看不到ng-view中的数据。

我的控制器:

.controller('TeamDetailsCtrl',
           ['MyService','testt',
             function(MyService,testt) {
                var self = this;
                self.team = testt.data;
}]);

那么,有什么区别? 最诚挚的问候

2 个答案:

答案 0 :(得分:2)

一:完成$http.get()后,它将解析并继续进入then。这将返回另一个promise,填充then函数result.data的结果。一个人回复第二个承诺。

二:从$http.get()返回原始承诺,结果为result,(其中您没有将结果转换为result.data)。两个语法的正确语法可能是:

Two: function(code) {
   var promise = $http.get('api/team/' + code);
    var promise2 = promise.then(function(resp) {
      return resp.data;
    });
      return promise2;
 }

答案 1 :(得分:1)

One会返回一个承诺,最终会返回resp.data

如果您在控制器中使用Oneresp.data === testttestt.data无效,因为resp.data.data不起作用。

如果您想使用One,请将self.team = testt.data更改为self.team = testt