我正在创建一个纯JavaScript模块,我正在尝试从API调用一些数据,这成功完成,如果我将响应分配给变量然后将其记录到控制台,那么我会看到预期的结果。但是,如果我返回它,那么我收到undefined。如果已经回答这个问题,我会道歉但是在浏览了一段时间之后我无法找到问题的答案。
我的代码如下:
httpRequest.onload = function() {
if(httpRequest.readyState === 4) {
if (httpRequest.status === 200) {
response = JSON.parse(httpRequest.responseText);
console.log(response) // Returns data correctly
return response;
} else {
console.log("API call error");
}
}
}
上面的代码返回模块外的另一个函数,如下所示:
console.log(module.callAPI(query)); //returns undefined
任何支持者都将不胜感激。
谢谢!
答案 0 :(得分:1)
您从onload()
方法返回值,但是您尝试记录callAPI()
方法的结果。
onload()
是一个回调,它将被称为"有时在将来" - 一旦请求完成。从它返回任何东西都没有多大意义。如果您分享您尝试实现的目标,我们可以为您提供一些提示。如问题所示,从onload()
登录到控制台是100%合适的。