api调用正在运行意外的次数

时间:2016-06-19 13:08:26

标签: javascript json api twitch

我正在工作twitch tv api.api调用我应该等于流媒体数组中的elemnts数量。但它是多次调用。我可以在codepen上看到它。

jsfiddle link https://jsfiddle.net/o48wwLdf/ HTML

javascript代码

$(document).ready(function() {
  var i;
  var streamers = ["ESL_SC2", "OgamingSC2", "cretetion", "freecodecamp", "storbeck", "habathcx", "RobotCaleb", "noobs2ninjas"];        //streamers array
  for (i = 0; i < streamers.length; i++) {
    jsoncall(streamers[i]);                            //calling function for api calls.
  }
});

function jsoncall(stream) {                            //function for api call
  $.getJSON('https://api.twitch.tv/kraken/streams/' + stream + '?callback=?', function(data) {
    if (data.stream === null) {                       //if channel is offline display offline
      $("p").append("<p>" + stream + "                                offline</p>");
    } else {                                    //if channel is online show what is he streaming.
      $("p").append("<p>" + stream + data.stream.game + "</p>");
    }
  });
}

1 个答案:

答案 0 :(得分:1)

执行此操作时:

$("p").append(...);

内容将附加到页面上的每个<p>元素。由于您在内容中添加了更多<p>个元素,因此您可以获得重复的内容。

Here's a forked version of your CodePen。我在主<p>元素中添加了一个id。请注意,将<p>附加到<p>并不是真的有意义; <p>个元素不能像其他<p>元素一样包含块级元素。浏览器允许它。那么,HTML:

<p id=main></p>

更新的JavaScript:

function jsoncall(stream) {
  $.getJSON('https://api.twitch.tv/kraken/streams/' + stream + '?callback=?', function(data) {
    if (data.stream === null) {
      $("#main").append("<p>" + stream + "                                offline</p>");
    } else {
      $("#main").append("<p>" + stream + data.stream.game + "</p>");
    }
  });
}