-2
结果我希望登录:[“freecodecamp”,“twitchtv”,“运动”]Array.length是3,但会记录一个“空”数组
我读过关于Asynchronous situation一堆帖子这解释了为什么我在控制台上获得这些“空[]”:
“空”意味着它看起来像这样:[],
rathan than this:['freecodecamp','twitchtv','exercise']。
什么我越来越至今:如果的console.log(online_streamer)放置如下场景:
A.(在回调的getJSON)---日志:未定义,然后在打印最终的“可用”数组之前,有几行空白[],其中包含3个项目(玩家名字)。如果我按下向下箭头按钮,则只有3个项目的数组才能显示。再次,(Async situation.)
我的问题: 我是不是放错了consoe.log或者我需要一些完成不同的功能打印可用阵列状:“物品1”,“ITEM2”,“项目3”]像场景的最后一次迭代A.)?多谢你们。
function getOnlineGamers(){
var online_gamers = [];
for (var i=0; i<gamers.length; i++){
//(gamers is a defined array with 11names of 11gamers.)
$.getJSON(url+"streams/"+ gamers[i]+cid).done(function(data){
if(data.stream === null){
}else {
var name= data.stream.channel.name;
online_gamers.push(name);
}
console.log(online_gamers); // <--- A
});
};
console.log(online_gamers); //<--- B
};
console.log(getOnlineGamers())
getOnlineGamers()不返回任何东西,所以登录就不会记录任何有用的东西。你需要使用适当的“异步返回”技术。 – Carcigenicate
可能重复[如何从异步调用返回响应?](https://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call) – Carcigenicate
第一个空数组来自'B',然后来自'console.log(getOnlineGamers())'的'undefined',*然后*'A'可能会记录一些东西。 – deceze