我有一个API回调函数填充数组'用户'当我在console.log数组时,所有元素都在那里,但当我尝试获取数组的长度时,它是0.还访问数组的任何部分,它返回undefined。 - >我知道这是异步的,但建议的副本并不能解释数组填充的原因,但除了记录整个数组之外,我无法访问它的任何部分。
有人可以向我解释原因吗?如果我做错了,请提供一些建议?提前致谢
var users = [];
var twitchUsers = ["ogamingsc2","nightblue3","asiagodtonegg3be0", "freecodecamp", "brunofin", "cockadoodledo"];
buildURL = function(type, user){
var url = 'https://api.twitch.tv/kraken/' + type + '/' + user + '?callback=?';
return url;
}
function getRemainingData(element, index, array){
$.getJSON(buildURL("streams", element), function(streamData){
if(streamData.stream){
var game = streamData.stream.channel.game;
var status = streamData.stream.channel.status;
users.push({name:element, game:game, status:status, error:""});
}
else if(!streamData.stream && !streamData.error){
users.push({name:element, game:"", status:"", error:""})
}
if(streamData.error){
var error = streamData.error
users.push({name:element, game:"", status:"", error:error});
}
});
}
console.log(users); //returns array as attached below
console.log(users[0]); //returns unidentified
console.log(users.length); //returns 0
答案 0 :(得分:1)
您在填充数组之前访问该数组。
$.getJSON()
是一个异步操作,您在调用它之后尝试访问它所填充的数组,但在它实际填充数组之前。