var=$http 和 return $http 的区别

Difference between var=$http and return $http

我想了解我工厂中这两个 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;
     }

如果我在resolve中使用Twoconfig中:

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;
}]);

那么,有什么区别呢? 最好的问候

一:当$http.get()完成后,它会解析并继续进入then。这 returns 另一个承诺,填充了 then 函数 result.data 的结果。一returns二诺。

两个:Returns 来自 $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;
 }

One return 是一个承诺,最终会 return resp.data

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

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