【发布时间】:2026-01-25 13:40:01
【问题描述】:
谁能告诉我为什么我的 console.log 为每个循环返回相同的输出以及如何解决它? console.log 应该返回“channels”数组的每个元素,但它一直输出最后一个元素“noobs2ninjas”。
它的功能类似于 FCC Twitch 应用程序here。不同之处在于我交换了 .$getJSON 顺序。他们的应用程序首先获得“流”,而我首先获得“频道”。我一直在比较我的代码和他们的代码,不明白为什么内部 .$getJSON 会一遍又一遍地重复相同的数组元素,但外部 .$getJSON 会正确循环每个元素。
function loadChannel() {
var channels = ["ESL_SC2", "OgamingSC2", "cretetion", "freecodecamp", "storbeck", "habathcx", "RobotCaleb", "noobs2ninjas"];
var display_name = null;
var logo = null;
var url = null;
var game = null;
var status = null;
var online = false;
function api(type, channel) {
return `https://api.twitch.tv/kraken/${type}/${channel}?callback=?`;
}
for (var index in channels) {
$.getJSON(api('channels', channels[index]), function(data) {
display_name = data.display_name;
logo = data.logo;
url = data.url;
game = data.game;
status = data.status;
$.getJSON(api('streams', channels[index]), function(data) {
// get online status
console.log(channels[index]); // <-- outputs same channel 'noobs2ninjas' each loop
console.log(data); // <-- outputs same object each loop
});
});
}
}
【问题讨论】:
标签: javascript jquery twitch