【发布时间】:2015-09-21 13:49:15
【问题描述】:
我正在尝试填充一个数组并稍后使用它。当我尝试访问索引处的对象时,我得到“未定义”的结果。
$(document).ready(function() {
var streamers = ["freecodecamp", "GeoffStorbeck", "terakilobyte"];
var cb = '?client_id=5j0r5b7qb7kro03fvka3o8kbq262wwm&callback=?';
var url = 'https://api.twitch.tv/kraken/';
var result = {};
streamers.forEach(function(stream)
{
$.getJSON(url + 'streams/' + stream + cb).success(function(data)
{
var streaming = (data.stream === null) ? false : true;
result.push(stream + " - " + streaming);
});
});
alert(result[0]);
alert(result[1]);
alert(result[2]);
});
【问题讨论】:
-
JSON 函数通常是
asynchronous,这意味着您的数组是在主代码块完成后构建的。 -
$.getJSON是异步的 -
与How to return the response from an asynchronous call? 相关,但可能有更好的副本用于处理循环中的异步操作。
-
请参阅stackoverflow.com/q/23667086/218196 了解问题的解释。
标签: javascript arrays json scope