无法访问数组元素

时间:2016-04-07 14:07:40

标签: javascript jquery arrays

我有一个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

console.log(users)

1 个答案:

答案 0 :(得分:1)

您在填充数组之前访问该数组。

$.getJSON()是一个异步操作,您在调用它之后尝试访问它所填充的数组,但在它实际填充数组之前。