Javascript函数返回未定义

Javascript function return undefined

本文关键字:未定义 返回 函数 Javascript      更新时间:2023-09-26

我有一个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请求返回的值。

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

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.
});

$http.get使用promise。或者换句话说:它异步处理请求。

您可以返回$http.get本身返回的内容(promise),并使用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) {
});

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

$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)
});