2015-04-23 17 views
1

我有一個通過AngularJS中的promise調用加載大量條目的網頁。該承諾解析爲至少包含4,000條目(JSON對象)的數組。當數據來自遠程服務時,網頁freezes持續5-10秒,並且總是彈出一個窗口詢問我是否要停止忙腳本。下面的代碼是我目前在做什麼:在數組中加載大量條目會導致網頁凍結

promiseObj.then(function(data) { 

//use async to handle each entry in data 
async.each(data, function(entry) { 

        //handle entry here... omitted 

        //push in the processed entry 
        $scope.allSegs.push(entry); 

       }, function(err) { 
        console.log("error in retrieving all data asynchronously: ", err); 
       }); //async 

}); 

爲了使網頁顯得更加敏感,我想到了大陣(data如上面的代碼所示)拆分成多個較小的陣列第一,然後使用'async.each'按順序處理每個較小的陣列。或者更好地使用間隔計時器來處理這個問題?我

+4

爲什麼你不;噸想想服務器端分頁,顯然在使用時不會查看4000個記錄.. –

+0

我沒有控制權服務器端,對不起 – TonyGW

+3

某些客戶端分頁怎麼樣?呈現您檢索的數據的有限部分? – Chris

回答

0

4000是不是那麼多的項目。關鍵因素是不要超載角度的$摘要生命週期。爲了做到這一點,你可以做一些修改,例如:

  1. 爲什麼環路與async.each如果你可以簡單地分配data變量你已經有了$scope.allSegs
  2. data數組有多少屬性?在代碼的地方它們都是必不可少的嗎?你可以將數據對象拆分爲更小的數據對象並分別在不同的時間加載它們?
  3. 作爲從幾個用戶以上建議,分頁會是一個有用的解決方案
相關問題