[英]AngularJS $http function always returning undefined when returning
var bar = dataService.makeHttpRequest("GET", "/documents/checkfilename/", null,
function (data, status, headers, config) {
// I can see `true` if I alert(data); here
// I want to return the contents of data because
// it's a true/false and would perform tasks based
// on it being true or false.
return data;
});
alert(bar); // this should alert `true` or `false` but is `undefined`
為什么alert(bar)總是返回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);
};
為什么您的方法makeHttpRequest
返回未定義的最簡單的解釋是,實際上它沒有返回值( return
語句在哪里?)
但是,即使您將調用結果返回到$http
也不是您想要的。 回調的全部要點是處理異步操作-如果要基於從HTTP響應接收的數據執行邏輯,則必須在回調本身中完成。
由於$http()
返回一個promise,所以一種更干凈的方式來做您想做的事情是:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.