我正在創建一個小應用程序,其中我有40個小部件,我正在循環和提取數據並重繪它。現在等到最後一個函數完成它的工作然後在angularjs
$scope.loopWiget = function(){
for(var i=0; i < $scope.totalWidget.length; i++)
{
if($scope.totalWidget[i].widgetType == "chart"){
$scope.fetchData($scope.totalWidget[i]);}
if($scope.totalWidget[i].widgetType == "table"){
$scope.fetchDataFortable($scope.totalWidget[i]);}
}
};
$scope.fetchData = function(id){
// fetching data and in response calling other function
$http({
method: 'POST',
url: 'rest/dataset/metadata',
type: 'json',
headers:{'id':id}
}).success(function(response){
$scope.drawWid(response);
})
};
$scope.fetchDataFortable= function(id){
// fetching data and in response calling other function
$http({
method: 'POST',
url: 'rest/dataset/metaTabledata',
type: 'json',
headers:{'id':id}
}).success(function(response){
$scope.drawWidTable(response);
})
};
$scope.drawWid = function(response){
// All draw logic comes here
};
$scope.drawWidTable= function(response){
// All draw logic comes here
};
$scope.totalWidget = [{'widgetId':'1','widgetType':'table'},{'widgetId':'2','widgetType':'chart'},{'widgetId':'3','widgetType':'maps'},{'widgetId':'4','widgetType':'chart'}];
$scope.loopWiget();
我的循環犯規等待完成drawWid功能和再次呼叫fetchdata由於這個我在1號窗口小部件獲得第二小部件的數據。所以如何等待循環,直到繪製函數完成其代碼,然後調用fetchData函數以用於下一個小部件。
謝謝@sumit,您的回答,您可以建議我用$ q.all()的例子,因爲我不能等到所有的數據來。 – Mayur
嗨Mayur,什麼$ q.all()是不會等到所有的請求已被解決,而與第一種方法,你可以通過索引或ID作爲散列,即 $ scope.fetchData($ scope.totalWidget [i] .widgetId,i);在這裏,我將作爲你的ID工作。現在您可以根據您獲得該ID的數據進行計算。 –