undefined
为什么警报(栏)总是返回data
?我知道上述函数中的true
有false
或dataService.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
});}
答案 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