如何使用for循环访问多个$ http.get()并将其响应存储在数组中并访问该数组

时间:2017-01-05 09:49:37

标签: angularjs google-chrome-devtools

我的代码如下,

// calls only the API and return it
s.getArchSales = function (url, qParam) {
    // set the request object
    var req = {
        'method': 'POST',
        'headers': securitySrv.header, // set the header
        'url': url,
        'data': qParam
    }
    return $http(req)
}

var portFolioMixArray = []
for(var i = 0; i < tech.length; i++ ){
 s.getArchSales(url, query)
    .then(function (response) {
      portFolioMixArray.push(response.data)
    })
 }

tech也是一个也是动态计算的数组

现在当我console.log(portFolioMixArray)显示 Array [0] 时,左侧有一个扩展符号,如下所示 enter image description here

我无法访问Array元素。我怎样才能访问它?

3 个答案:

答案 0 :(得分:0)

您可以使用portFolioMixArray[0]

来获取它

如果要绑定html中的值,则需要使用ng-repeat 您应该使用$ scope

中的对象

喜欢

$scope.portFolioMixArray = []
for(var i = 0; i < tech.length; i++ ){
 s.getArchSales(url, query)
    .then(function (response) {
      $scope.portFolioMixArray.push(response.data)
    })
 }

// html

<div ng-repeat="item in portFolioMixArray">{{item .YourObjectNmae}}</div>

答案 1 :(得分:0)

当你执行console.log时,当时尚未收到http响应且数组为空,因此您无法访问数组元素。

稍后,收到响应并更新了阵列。这就是为什么你看到带有消息的蓝色图标。

答案 2 :(得分:0)

我认为你应该理解承诺的概念,在Angular中你可以使用$ q。(https://docs.angularjs.org/api/ng/service/ $ q)

您可以像这样访问您的数组:

var promises = tech.map(function (item) {
    return s.getArchSales(url, query).then(function (response) {
        portFolioMixArray.push(response.data)
    })
}
$q.all(promises).then(function () {
    console.log(portFolioMixArray);
}