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
中使用Two
在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;
}]);
那么,有什么区别呢?
最好的问候
一:当$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
。
如果您在控制器中使用 One
、resp.data === testt
。 testt.data
不起作用,因为 resp.data.data
不起作用。
如果要使用 One
,请将 self.team = testt.data
更改为 self.team = testt
。
我想了解我工厂中这两个 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
中使用Two
在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;
}]);
那么,有什么区别呢? 最好的问候
一:当$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
。
如果您在控制器中使用 One
、resp.data === testt
。 testt.data
不起作用,因为 resp.data.data
不起作用。
如果要使用 One
,请将 self.team = testt.data
更改为 self.team = testt
。