suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Warum kann bei einem Array mit 3 Objektelementen nur auf das erste Element zugegriffen werden?


Es gibt drei Elemente in der Statuserweiterung
Dann ist status[0] das Objektelement, das ich hineinschiebestatus[0]是我push进去的对象元素
然后status[1]status[2]Dann status[1] und status [ 2]Es ist alles undefiniert, warum?

Nachdem ich es mehrmals versucht habe, denke ich, dass es etwas mit dem Variablenbereich zu tun hat. Das Ergebnis der Array-Variablen befindet sich jedoch in der äußersten Ebene die Außenseite?

function getStreamsStatus(channels) {
  var results = [];
  $.each(channels, function(index, channel) {
    var result = [];
    // result.push({ name: channel });
    $.getJSON (
      "https://api.twitch.tv/kraken/streams/" + channel,
      {
        Accept: "application/vnd.twitchtv.v5+json",
        client_id: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        callback: ""
      },
      function(data) {
        result.push(data);
        $.getJSON(
          data._links.channel,
          {
            Accept: "application/vnd.twitchtv.v5+json",
            client_id: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
            callback: ""
          },
          function(channel_data) {
            result.push(channel_data);
            // console.log(result);
            // console.log(result[0]);
            // console.log(result[1]);
          });
        console.log(result);
        console.log(result[0]);
        console.log(result[1]);
      });
    results.push(result);
    // console.log(result);
    // console.log(result[0]);
    // console.log(result[1]);
  });
  return results;
}
PHP中文网PHP中文网2787 Tage vor621

Antworte allen(4)Ich werde antworten

  • 给我你的怀抱

    给我你的怀抱2017-05-19 10:25:15

    Ajax是异步过程,回调函数是在数据取回之后才执行的操作
    而你的results.push(result),在数据没有取回的时候应该已经push进去了
    所以你查看的时候是还没push进去数据的数组,
    要等数据加载完你再console才能看得到数据
    前面的Ajax嵌套也是同理

    Antwort
    0
  • PHPz

    PHPz2017-05-19 10:25:15

    undefined也可以存进数组里,并且也有长度。

    Antwort
    0
  • 迷茫

    迷茫2017-05-19 10:25:15

    老哥…截图求截全,

    好了,你用了each 那就已经开始遍历数组了

    $.each(statuses, function (index, status) {
      console.log(status)
    })

    输出的status 就是各个object

    Antwort
    0
  • 黄舟

    黄舟2017-05-19 10:25:15

    控制台中,点击数组后显示的是实时的状态,而你打印时只有一个,后面异步来了数据填充进了数组。你在代码里输出result长度就知道

    Antwort
    0
  • StornierenAntwort