Javascript 在for循环中调用get JSON函数时出错
通过从循环中删除一个函数,我在重新格式化JavaScript时遇到了问题 以下是我的JavaScript代码:Javascript 在for循环中调用get JSON函数时出错,javascript,for-loop,getjson,Javascript,For Loop,Getjson,通过从循环中删除一个函数,我在重新格式化JavaScript时遇到了问题 以下是我的JavaScript代码: $(document).ready(function () { //GET TWITCH TV STREAMERS' STATUS AND API CALL var twitchTvStreamers = ["FreeCodeCamp", "ESL_SC2", "OgamingSC2", "cretetion", "storbeck", "habathcx", "RobotC
$(document).ready(function () {
//GET TWITCH TV STREAMERS' STATUS AND API CALL
var twitchTvStreamers = ["FreeCodeCamp", "ESL_SC2", "OgamingSC2", "cretetion", "storbeck", "habathcx", "RobotCaleb", "noobs2ninjas"];
//OUT OF ALL THE TWITCH TV STREAMERS IN A TWITCH TV ARRAY FIND THOSE 8 STREAMERS LISTED
for (var i = 0; i < twitchTvStreamers.length; i++) {
//DO A GETJSON ON THIS ARRAY TO RETRIEVE INFORMATION FROM THE VALUES OF THOSE 8 TWITCH TV STREAMERS
$.getjSON('https://wind-bow.glitch.me/twitch-api/streams' + val, function (st) {
//var url="https://wind-bow.glitch.me/twitch-api/streams"
channelName = val;
//IF ANY OF THE STATUSES OF THE 8 TWITCH TV STREAMERS ARE EQUAL TO NULL, OR OFFLINE, THEN DO SOMETHING
if (st.stream === null) {
//GET JSON INFO OF THOSE OFFLINE STREAMERS
$.getjSON('https://wind-bow.glitch.me/twitch-api/channels' + val, function (ch) {
channelID = ch.Display_name;
channelLogo = ch.logo;
channelUrl = ch.url;
streamContent = ch.content;
//POST INFO TO DISPLAY AREA OF WEB APP (...ADD OTHER STUFF TO THIS APPEND LATER)
$('#offline').append('<div class="TV-screen">');
});
} else
//REPEAT SAME SCENARIO AS USED FOR OFFLINE STREAM STATUS
$.getjSON('https://wind-bow.glitch.me/twitch-api/channels' + val, function (ch) {
channelID = ch.Display_name;
channelLogo = ch.logo;
channelUrl = ch.url;
streamContent = ch.content;
$('#online').append('<div class="TV-screen">');
});
}
//在……等……的帮助下
我将上述代码放入,它给出了以下结果:
三个警告:
11不要在循环中生成函数。
42预期,而不是看到。
49不可恢复的语法错误。100%扫描。
如何重新格式化第11行的代码以包含get JSON函数,但不将其包含在循环中
你忘了末尾有很多括号。这就是您的代码的外观
$(document).ready(function() {
//GET TWITCH TV STREAMERS' STATUS AND API CALL
var twitchTvStreamers = ["FreeCodeCamp", "ESL_SC2", "OgamingSC2", "cretetion", "storbeck", "habathcx", "RobotCaleb", "noobs2ninjas"];
//OUT OF ALL THE TWITCH TV STREAMERS IN A TWITCH TV ARRAY FIND THOSE 8 STREAMERS LISTED
twitchTvStreamers.map(function(val) {
//DO A GETJSON ON THIS ARRAY TO RETRIEVE INFORMATION FROM THE VALUES OF THOSE 8 TWITCH TV STREAMERS
$.getjSON('https://wind-bow.glitch.me/twitch-api/streams' + val, function(st) {
//var url="https://wind-bow.glitch.me/twitch-api/streams"
channelName = val;
//IF ANY OF THE STATUSES OF THE 8 TWITCH TV STREAMERS ARE EQUAL TO NULL, OR OFFLINE, THEN DO SOMETHING
if (st.stream === null) {
//GET JSON INFO OF THOSE OFFLINE STREAMERS
$.getjSON('https://wind-bow.glitch.me/twitch-api/channels' + val, function(ch) {
channelID = ch.Display_name;
channelLogo = ch.logo;
channelUrl = ch.url;
streamContent = ch.content;
//POST INFO TO DISPLAY AREA OF WEB APP (...ADD OTHER STUFF TO THIS APPEND LATER)
$('#offline').append('<div class="TV-screen">');
});
} else {
//REPEAT SAME SCENARIO AS USED FOR OFFLINE STREAM STATUS
$.getjSON('https://wind-bow.glitch.me/twitch-api/channels' + val, function(ch) {
channelID = ch.Display_name;
channelLogo = ch.logo;
channelUrl = ch.url;
streamContent = ch.content;
$('#online').append('<div class="TV-screen">');
});
}
}); // getJSON
}); // map
}); // ready
这解决了问题2和问题3。但我还是不知道你的代码里有什么。我猜是流名称,所以我将其添加到:
函数而不是for循环以避免第一个问题
在语法、输入错误、错误的函数名和错误使用占位符延迟异步调用返回方面,您已经遇到了大量错误。下面是错误的摘要。同时,运行代码以确保它实际工作 $document.readyfunction{ //我们今天要跟踪谁 var twitchTvStreamers=[FreeCodeCamp、ESL_SC2、OgamingSC2、cretetion、storbeck、habathcx、RobotCaleb、Noobs2 Injas]; //使用getChannelInfo函数获取每个通道的状态 twitchTvStreamers的forchannel{ getChannelInfochannel; } }; //此函数用于获取每个通道的状态 //而且,根据在线还是离线, //使用online/offline参数调用appendInfo函数 var getChannelInfo=channel=>{ $.getJSON'https://wind-bow.glitch.me/twitch-api/streams/“+频道 .donefunctioninfo{ 如果info.stream==null appendInfochannel,“脱机”; 其他信息频道,“在线”; }; } //此函数用于获取有关频道是联机还是脱机的信息。 //根据此状态,它将获取频道信息 //并将其附加到相应的`` var appendInfo=通道,目标=>{ $.getJSON'https://wind-bow.glitch.me/twitch-api/channels/“+频道 .完成功能{ channelID=ch.display\u name; channelLogo=ch.logo; channelUrl=ch.url; streamContent=ch.content; $+target.append+channel+'是'+target; }; }
瓦尔来自哪里?@Phil,channelName=val;这根本不能回答我的问题all@Phil,val来自get JSON API callNo它不是。你甚至在URL中使用它,但它没有在任何地方定义。我怀疑你想要var val=twitchvstreamers[I],但谁知道呢。即使您解决了这个问题,在for loop中使用回调函数也会遇到各种各样的问题,因为它不会运行,代码中仍然有大量的打字错误和错误。@vladkras,是的,val是流名称,感谢您解决了其中的一些问题!当我把它放进代码笔时,它写着,“意外的结束”input@vladkras,我之所以使用for循环也是因为它更快。我看到一个例子,每个方法都使用JQuery,但我不想使用她的[…想用我自己的方式来做…@Aydin,我没有试图解决所有的问题,只有jshint中提到的作为OP的问题asked@codebwoy,当你有几十个ajax同步请求时,循环速度意味着什么!你他妈的是怎么这么快解决的!你是JavaScript专家吗?天哪!哇!你能不能也投票支持我的问题/帖子,因为这是一个问题很高兴大家都能看到,我需要投票:非常感谢!!!!你的代码正在运行,但它给了我一个错误:$未定义?问题是我的浏览器吗?你必须将jQuery添加到你的页面才行!我以前也有过它…但它不起作用….当我添加你的代码时,它起作用了lol….谢谢你帮助我…..我必须添加一些新的内容她对javascript代码的项目要求……希望它不会弄乱您编写的代码lol……也很有趣……您为什么使用.done?……以前从未见过该属性!仅ES6解决方案。这不会在所有浏览器中都起作用