无法访问数组内的对象-Javascript

时间:2020-04-29 21:51:07

标签: javascript arrays json angularjs

因此,我在forloop中运行了一些$ http.get请求,并将结果存储在数组中。当我跑步时: console.log(episodesObj[0])返回undefined。但是,当我运行console.log(episodesObj)时,它将返回整个数组:

enter image description here

下面是我正在运行的代码

    var episodesObj = [];
    for(i=1;i<=num_seasons;i++) {
      $http.get('/api/show/<%=show.id%>/season/'+i)
      .then(response => {
        episodesObj.push(response.data)
      });
    }
    console.log(episodesObj); ```

2 个答案:

答案 0 :(得分:0)

如果要打印最终结果,可以使用promise all

所有(承诺);

将多个promise合并为一个promise,当所有输入promise都被解决时,该promise被解决。

类似的东西:

var listOfPromises = [];
for(i=1;i<=num_seasons;i++) {      
    listOfPromises.push($http.get('/api/show/<%=show.id%>/season/'+i))     
}


$q.all(listOfPromises).then(function(result){
   
    // we run this code once all promises are resolved
    for (var i = 0; i < result.length; i++){
        episodesObj.push(result[i]);
    }
   
   console.log(episodesObj);
});

答案 1 :(得分:0)

直到http调用完成后,您才将响应发送到数组,因此,如果立即登录episodesObj[0],则它是不确定的。

Chrome会保留对控制台日志中非原始内容的实时引用,因此,当http调用最终更新数组时,它也会在控制台中进行更新,这就是为什么以后可以查看它的原因。