Javascript AngularJs$HTTP循环计数器不更新

Javascript AngularJs$HTTP循环计数器不更新,javascript,html,angularjs,Javascript,Html,Angularjs,我有以下代码从HTTP服务中提取数据并将JSON数据绑定到HTML 此函数带有一个2秒计时器,可在后端发生更改时自动执行 函数采样设备(){ var DeviceArray=[]; 用于(设备中的id){ var设备=设备[id]; var pollingapirl=“DBService.asmx/HelloWorld”; $http({method:'GET',url:pollingApiUrl,params:{id:id}}) .then(函数(响应){//Success device.s

我有以下代码从HTTP服务中提取数据并将JSON数据绑定到HTML

此函数带有一个2秒计时器,可在后端发生更改时自动执行

函数采样设备(){
var DeviceArray=[];
用于(设备中的id){
var设备=设备[id];
var pollingapirl=“DBService.asmx/HelloWorld”;
$http({method:'GET',url:pollingApiUrl,params:{id:id}})
.then(函数(响应){//Success
device.status=response.data.JsonStatus;
device.comp=response.data.CompanyName;
device.loc=response.data.ReceiverLocation});
}
$scope.devices=devicesArray;}
{{device.comp}}
{{device.loc}}
{{device.test}
函数采样设备(){
var DeviceArray=[];
var i=0;
对于(i=0;i
您在for循环中多次执行http请求

for循环不会等待,它将快速连续地触发所有请求。要使事情等待,请查看异步库和每个函数

在async的成功回现中,您将设置范围


或者。。。更改后端以便只执行一个API调用,这会更好。

首先,变量
设备的内容是什么?我没有看到任何声明或分配。或者这只是一个示例代码?这只是一个示例代码,变量设备有一些赋值。例如,ID如何在http服务调用中使用async.each,请遵循链接。您可以使用async以可控的方式在结果上循环。在这种情况下,它是一个递归函数,基本上意味着在调用它之前,迭代不会发生。。。根据本例中的http承诺。使用track by$index,
     function sampleDevices() {
    var devicesArray = [];
    var i=0;
    for(i=0; i < devices.length; i++) {
    var device = {};

      var pollingApiUrl = "DBService.asmx/HelloWorld";

        $http({ method: 'GET', url: pollingApiUrl, params: { id: devices[i].id } })
      .then(function (response) { // Success

              device.status= response.data.JsonStatus;
              device.comp = response.data.CompanyName;
              device.loc = response.data.ReceiverLocation;
                  devicesArray.push(device);
    });

    }
    $scope.devices = devicesArray;  }
<tr ng-repeat="device in devices |orderBy: '-event.rssi' limitTo: 3">
<td> {{device.comp}} </td>
<td> {{device.loc}} </td>
<td> {{device.test }} </td>
</tr>