在存储变量vs函数调用中访问值时看到的不同行为返回变量

时间:2013-11-21 21:48:33

标签: javascript ajax google-chrome

道歉必须是一个全新的问题。我开始使用Backbone与现有的Rails应用程序交谈。我正在使用Chrome中的控制台来测试一些JS功能,而且我看到了我无法理解的行为。

我已经定义了一个名为apiGet的JS函数,它只包含一个jQuery AJAX调用,其中一些自定义内容被卡在HTTP请求头中。

当我调用apiGet并将结果存储在变量中时,我可以在该变量上调用.responseText并查看该字段的内容。

但是,如果我只是尝试在.responseText来电时致电apiGet(...),即apiGet(...).responseText,则显示的结果为undefined。这对我没有意义: - )

我错过了一些明显的东西 - 有人能告诉我吗?

这是控制台的样子:

> var url = 'http://localhost:3002/api/exercises/11';
  undefined
> result = apiGet(url);
  Object {readyState: 1, getResponseHeader: function, getAllResponseHeaders: function, setRequestHeader: function, overrideMimeType: function…}
> result.responseText
  "{"id":1,"number":2,"version":1,"markup":null,"html":null,"background":null}"
> apiGet(url).responseText
  undefined

1 个答案:

答案 0 :(得分:1)

看起来你的函数apiGet返回一个xhr(请求对象)。这将异步执行,因此在响应从服务器返回之前responseText不可用。当您在返回时直接调用该属性时,它发生得太快以至于服务器尚未响应,但是当您手动使用控制台时,当您键入result.responseText并按Enter键时,结果已经是英寸

当然是猜测,因为我还没有看到getApi的内容。