Javascript函数返回undefined

时间:2015-04-07 18:48:57

标签: javascript jquery angularjs

我有一个AngularJS项目,并且会向后端发出一个get请求,这将返回数据并使用此函数,因为对同一个url的get请求被多次发送

function getfunction(some input data) {
    $http.get('requset URL' , { params : {some parameters})
    .success(function(data){
        return data;
    });
}
var output = getfunction(input data to the function);

但是输出总是未定义我如何修复它以使输出具有从上面的get请求返回的值。

4 个答案:

答案 0 :(得分:4)

$ http返回一个承诺。您的数据将异步到达。

function getfunction(some input data) {
    return $http.get('requset URL' , { params : {some parameters});
}

var output;
getfunction(input data to the function).then(function(data){
  output = data;
}, function(){
  // Handle errors.
});

答案 1 :(得分:1)

$http.get使用promises。或者换句话说:它以异步方式执行请求。

您可以返回$http.get返回自己的内容 - 承诺 - 并使用then添加续集:

function getfunction(some input data) {
    return $http.get('requset URL' , { params : {some parameters});
}

getfunction(input data to the function).then(function(data) {

});

// or .success

getfunction(input data to the function).success(function(data) {

});

答案 2 :(得分:0)

调用是异步的,因此您调用的函数将首先运行,然后在从get请求返回响应时运行成功回调。成功处理程序应该处理此方案中的输出(例如,在文本框中显示返回值)

答案 3 :(得分:0)

$ http返回$ promise。所以你要么使用$ q服务:

function getfunction(some input data) {
    var deferred = $q.defer();
    $http.get('requset URL' , { params : {some parameters})
    .success(function(data){
        deferred.resolve(data)
    });
    return deferred.promise;
}
var output = getfunction(input data to the function).then(function(data){
  output = data;
}, function(err){
  console.log(err)
});

function getfunction(some input data) {
  return $http.get('requset URL' , { params : {some parameters});

}

var output;
getfunction(input data to the function).then(function(data){
  output = data;
}, function(err){
  console.log(err)
});