为什么当我将一个变量记录到控制台时我得到输出但是当我返回它时,我收到了“Undefined”

时间:2014-11-16 15:37:49

标签: javascript ajax json

我正在创建一个纯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

任何支持者都将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:1)

您从onload()方法返回值,但是您尝试记录callAPI()方法的结果。

onload()是一个回调,它将被称为"有时在将来" - 一旦请求完成。从它返回任何东西都没有多大意义。如果您分享您尝试实现的目标,我们可以为您提供一些提示。如问题所示,从onload()登录到控制台是100%合适的。