У меня возникла проблема с разрешением обещаний при использовании $q.all, может ли кто-нибудь мне помочь?
Когда у меня есть одно обещание, следующее работает нормально:
var dashlettePromise = DashboardsDataService.getTabDetails(dashboardData);
dashlettePromise.then(function(data) {
var template = '<div class= "allChartsDiv">';
for (var dashVar = 0; dashVar < data.tabDetails.length; dashVar++) {
var dashletteId = data.tabDetails[dashVar].dashletteId; // Added
....
}
}, function(error) {
alert(error);
}, function(progress) {
// report progress
});
Но мне нужно сделать несколько вызовов ajax, поэтому я использовал $q.all, как показано ниже:
var promises = [];
angular.forEach(dashboardslayoutArray, function(dashboardslayout) {
dashboardData.dashletteBeansList = [];
dashboardData.dashletteBeansList[0] = dashboardslayout;
var dashlettePromise = DashboardsDataService.getTabDetails(dashboardData);
promises.push(dashlettePromise);
});
Теперь мне нужно разрешить все промисы в $q.all один за другим, точно так же, как и тот, который я разрешил для одного промиса, как показано выше. Поэтому я использовал код, показанный ниже, но он не работает должным образом. У меня возникают сомнения относительно логики, которую я использую внутри $q.all(promises) для выполнения обещаний. Это правильный подход? или Может ли кто-нибудь предложить лучший подход к решению обещаний в $q.all?
$q.all(promises)
.then(function(allData) {
// all promises were resolved here
angular.forEach(promises, function(eachPromise) {
eachPromise.then(function(data) {
for (var dashVar = 0; dashVar < data.tabDetails.length; dashVar++) {
var dashletteId = data.tabDetails[dashVar].dashletteId; // Added
var axisType = data.tabDetails[dashVar].axisType;
.....
}
}, function(error) {
alert(error);
})
})
});
promises
внутри функцииthen()
, поскольку у вас уже есть все данные в массивеallData
. Не уверен, что я достаточно ясно выразился. - person Blackhole   schedule 16.01.2015$q.all
? - person New Dev   schedule 16.01.2015