如何通过get请求获取函数的结果?

问题描述 投票:-1回答:3

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

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

console.log(getStatus(ID));

我期望这段代码返回然后记录将是我需要的信息。

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

undefined

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

javascript function post get request
3个回答
0
投票

你正在进行异步操作。在你的情况下使用回调。如果你想打印statusCallback,你必须像Christos提到的那样控制它。

console.log(getStatusId())

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

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


0
投票

使用ES7,您可以使用async await

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

它们是开始使用的好习惯,因为代码更易于阅读。


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);
   });
}
© www.soinside.com 2019 - 2024. All rights reserved.