2017-03-28 107 views
0

$scope.event達到BufferLimit我從一個陣列,這將減少totalReceived值比我外面的if語句推新元素刪除第一個元素,但是當我把新元素我沒有看到在陣列,作爲最後一個項目?我也用slice是凍結了我的瀏覽器在bufferlimit與shift是一樣slice。由於數據量高,我正在尋找更好的解決方案?當添加新的元素到數組的末尾它使用拼接改變?

Ctrl.js如下

//BufferLimit is 8MB totalReceived value is coming from other method 

$scope.event = []; 
    function safelyAdd(element) { 
     if (totalReceived > Bufferlimit && $scope.event.length) { 

    $scope.event = $scope.event.splice(1); //delete first element in $scope.event 

      totalReceived -= $scope.event[0].messageSize; //total message size minus deleted message size 
      console.log('totalReceivedBytes', totalReceived); 
      // $scope.event =[];//reset array if max size reached.. 
      console.log('$scope.event', $scope.event) 
     } 
     console.log('$scope.event.length', $scope.event.length); 

      $scope.event.push(element); //then push new item.. 

    } 

回答

0
In your code line# 4, dont assign spliced array to same array.Just splice it 


$ scope.event.splice(1); //刪除$ scope.event中的第一個元素

+0

所以只需創建新的數組對象'var temp = $ scope.event.splice(1);' – hussain

+0

哦你說的只是拼接它 – hussain

+0

但我看到'$ scope.event .length'不停地用新的消息越來越多,甚至我們'splice'第一要素,即實際的目的,以減少對瀏覽器 – hussain

相關問題