25/01/2016 Development / angular

This a simple example of queues using setIterval. This is a best practices for iterator object array.

var myApp = angular.module('myApp',[]);

function MyCtrl($scope) {
    
    $scope.queue = [];
    
    $scope.addQueue = function(){
       
        $scope.queue.push({
          name : $scope.name,
        money:$scope.money
      });
    }
    
    
    $scope.tratarFila = function(){

            if($scope.queue.length === 0){
          return false;
      }

            var indice = $scope.queue.filter(function(item){
          return item.money > 0;
        }); 
      
      if(indice.length === 0){
          return false;
      }

            var index = Math.floor(Math.random() * indice.length);
            var fila = indice[index];

            if(fila.money > 0){
          fila.money--;
        $scope.$apply();
      }
    };
    
    setInterval(function(){
        $scope.tratarFila();
    }, 50);
    
}

 

<div ng-controller="MyCtrl">
  
  <input ng-model="name" placeholder="nome"/>
  <input ng-model="money" placeholder="money"/>
  <button ng-click="addQueue()">
  adicionar user
  </button>
  <hr/>
  <ul>
  <li ng-repeat="q in queue">{{q.name}} - {{q.money}}</li>
  </ul>
  </ul>
  
</div>

http://jsfiddle.net/HB7LU/22825/