簡體   English   中英

AngularJS $ http函數總是在返回時返回未定義

[英]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 我知道上述函數中的datatruefalse ,我可以對其進行警報; 但是,我想返回它,並且僅在它為真時才執行操作。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM