Как записать результаты каждого обещания, выполненного в цикле, чтобы оценить, как только выполнение будет завершено? Мне нужно перенаправить либо на страницу ошибки, либо на основании результатов обещания. Вот шаги:
1. Вызовите retrieveDetails
2. Если указанное выше разрешено, тогда вызовите updateDetails
3. Выше двух шагов выполняются в цикле для каждой ассоциации
4. Определите выполнение всех обещаний и оцените результаты
5. По результатам определим навигацию
На данный момент я получаю сообщение об ошибке «Не удается установить заголовки после их отправки».
Вот псевдокод
let currentData;
let promises = [];
let updateResponse = 'SUCCESS';
let failureFlag;
let failureMsg;
let retrieveData = function(networkID, number) {
return new Promise(function(resolve, reject) {
retrieveService.retrieveDetails(networkID, number, function(err, result) {
if (err) {
failureFlag = true;
reject(err);
}
currentData = result;
resolve();
});
})
.catch((error) => {
failureMsg = getfailureMsg();
failureFlag = true;
});
};
data.associations.forEach(function(association) {
var getIndicator = retrieveData(loggedOnUser, association.location);
getIndicator
.then(function() {
let updateIndicator = function(loggedOnUser, key, number, currentData) {
return new Promise(function(resolve, reject) {
updateService.updateDetails(loggedOnUser, key, number, currentData, function(err, result) {
if (err) {
failureFlag = true;
reject(err);
} else if (result) {
if (result == updateResponse) {
resolve();
} else {
failureFlag = true;
reject(result);
}
}
});
})
.catch((error) => {
failureMsg = getfailureMsg();
failureFlag = true;
});
};
if (currentData) {
var addIndicator = updateIndicator(loggedOnUser, key, association.location, currentData);
}
addIndicator
.then(function() {
promises.push(getIndicator);
})
})
});
Promise.all(promises)
.then(function() {
if (failureFlag) {
req.flash('info', 'failure');
res.redirect('/staffSummary');
} else {
req.flash('info', 'success');
res.redirect('/staffSummary');
}
})
}