我如何从带有请求的函数中获得结果?

时间:2018-09-09 13:32:27

标签: javascript function post get request

我有一段代码通过一个函数向我网站的另一部分提交GET请求。

function getStatus(ID) {
    $.get('/api/'+ID+'/info', function(statusCallback) {
        return statusCallback;
    });
}

console.log(getStatus(ID));

我希望此代码返回然后记录的内容就是我需要的信息。

我在控制台日志中实际得到的是

undefined

我该怎么做才能得到实际结果?

3 个答案:

答案 0 :(得分:0)

您需要按以下方式更改功能:

 function getStatus(ID) {
     $.get('/api/'+ID+'/info', function(statusCallback) {
         console.log(statusCallback);
     });
 }

作为get调用的第二个参数传递的函数称为成功回调。一旦在getStatus函数的每次调用中发出的get请求成功完成,它将被调用。只有这样,您才能访问服务器返回的内容,并且可以像上面一样轻松地对其进行访问。

更新

如果要返回服务器发送的数据,则必须先声明一个变量

function getDataById(ID){
   function callback(data){
       return data;
   }

   $.get('/api/'+ID+'/info', function(data) {
       return callback(data);
   });
}

答案 1 :(得分:0)

您正在执行异步操作。在您的情况下使用回调。如果您想打印statusCallback,则必须像Christos所说的那样进行console.log记录。

console.log(getStatusId())

将返回undefined,因为它是从没有显式返回的函数返回的默认值。您的函数没有return语句,只调用了一些异步方法。

顺便说一句,如果可以的话,尝试使用promise而不是回调;)

答案 2 :(得分:0)

借助ES7,您可以使用异步等待

async function getStatus(ID) {
  $.get('/api/'+ID+'/info', function(statusCallback) {
    // This is executed in the future, but await knows how to deal with it
    return statusCallback;
  });
}
console.log(await getStatus(ID));

这是一个入门的好习惯,因为代码更容易阅读。