我有一段代码在函数中向我网站的另一部分提交GET请求。
function getStatus(ID) {
$.get('/api/'+ID+'/info', function(statusCallback) {
return statusCallback;
});
}
console.log(getStatus(ID));
我期望这段代码返回然后记录将是我需要的信息。
我在控制台日志中实际得到的是
undefined
我该怎么做才能得到实际结果?
你正在进行异步操作。在你的情况下使用回调。如果你想打印statusCallback
,你必须像Christos提到的那样控制它。
也
console.log(getStatusId())
将返回undefined
,因为它是从没有显式返回的函数返回的默认值。你的函数没有return
语句,它只调用一些异步方法。
顺便说一句,如果可以的话,尝试承诺而不是回调;)
使用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));
它们是开始使用的好习惯,因为代码更易于阅读。
您需要更改以下功能:
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);
});
}