我如何在for循环中使用$ interval

时间:2015-06-15 11:16:52

标签: javascript jquery angularjs setinterval

您好我想在for循环中运行$ interval

我做了什么

  • 我在下面的代码中实现了自动刷新
  • 我正在检查具有状态排队对象的数据数组
  • 然后我正在调用刷新实例(这是一个ajax调用来获取 实例的状态)
  • 但是假设有多个实例排队为a 状态,然后刷新最后一个
  • 的实例

我知道什么 我想刷新所有的isntnaces

例如:

data=[{id:1,status:'queued'},{id:2,status:'active'},{id:3,status:'queued'},{id:4,status:'active'},{id:5,status:'queued'}];

然后id:5 instnace只是令人耳目一新但我想要所有的实例,如1,3,5

for (var i = 0; i < data.length; i++)
{   
  if(data[i].status =='queued')
  {
    var id = data[i].id;
    promiseObj[id] = $interval( function(){ $scope.refreshInstance('active',id); }, 20000);

  }
}

1 个答案:

答案 0 :(得分:1)

这里的问题是使用closure inside a loop

但在这种情况下,您可以使用更简单的forEach()循环来修复它

angular.forEach(data, function (item, idx) {
    if (item.status == 'queued') {            
        promiseObj[item.id] = $interval(function () {
            $scope.refreshInstance('active', item.id);
        }, 20000);
    }
});