Angularjs 如何使用for循环访问多个$http.get()并将它们的响应存储在一个数组中,以及如何访问该数组

Angularjs 如何使用for循环访问多个$http.get()并将它们的响应存储在一个数组中,以及如何访问该数组,angularjs,google-chrome-devtools,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'

我的代码如下所示

// 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)
    })
 }
//只调用API并返回它
s、 getArchSales=函数(url,qParam){
//设置请求对象
var req={
'method':'POST',
“headers”:securitySrv.header,//设置头
“url”:url,
“数据”:qParam
}
返回$http(req)
}
变量portFolioMixArray=[]
对于(变量i=0;i
tech
也是一个动态计算的数组

现在,当我
console.log(portFolioMixArray)
显示数组[0]时,其左侧有一个扩展符号,如下所示,


我无法访问数组元素。如何访问它???

您可以使用
portFolioMixArray[0]

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

$scope.portFolioMixArray=[]
对于(变量i=0;i
//html

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

当您执行console.log时,当时还没有收到http响应,并且数组为空,因此您无法访问数组元素


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

我认为你应该理解承诺的概念,从角度来说,你可以使用$q.($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);
}

我明白。但是如何访问阵列我认为对于循环中多个承诺的用例,使用
$q.all
更有意义。请看这里的示例-portFolioMixArray[0]显示未定义。它不起作用
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);
}