AngularJS $ http函数在返回时总是返回undefined

时间:2015-05-20 20:08:54

标签: javascript angularjs

undefined

为什么警报(栏)总是返回data?我知道上述函数中的truefalsedataService.makeHttpRequest,我能够提醒它;但是,我想把它归还,只有在它成真的时候才能做。

dataService.makeHttpRequest = function(requestType, urlString, dataObject, successFunc, errorFunc) { $http({ method:requestType, url:$rootScope.serverAddress+urlString, data:dataObject }) .success(successFunc) .error(errorFunc); }; 服务功能如下所示:

function Hello($scope, $http) {
  $http.get('URL').
  success(function(data) {
  $scope.response = data
 });}

1 个答案:

答案 0 :(得分:1)

为什么你的方法makeHttpRequest返回未定义的最简单的解释是,它实际上并没有返回一个值(return语句在哪里?)

但是,即使您将通话结果返回$http,也不会是您想要的。回调的重点是处理异步操作 - 如果要根据从HTTP响应接收的数据执行逻辑,则必须在回调本身中完成。

由于$http()返回一个承诺,一个更干净的方式来做你想做的事情:

dataService.makeHttpRequest = function(requestType, urlString, dataObject) {
    return $http({
        method:requestType, 
        url:$rootScope.serverAddress+urlString, //recommend taking this as a parameter instead of abusing $rootScope
        data:dataObject
    });
};

dataService.makeHttpRequest("GET", "/documents/checkfilename/", null).success(function (data, status, headers, config) {
     //do whatever you want with "data" here
}); //can also chain ".error" here to specify an error callback