Javascript 在for循环中调用get JSON函数时出错

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

通过从循环中删除一个函数,我在重新格式化JavaScript时遇到了问题

以下是我的JavaScript代码:

$(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解决方案。这不会在所有浏览器中都起作用