I'm doing forEach
in a array
but this loop has an ajax request inside for each repetition and I need to wait until all the ajax are ready to continue ordering the array that is filled with these requests, this It's my code.
var getTables = (scoreQ, scoreE) => {
var arr = [];
Object.keys(scoreQ).forEach(key => {
var range;
var scoreDivide = scoreE[key] / 3;
if (parseFloat(scoreQ[key]) < parseFloat(scoreDivide)) {
range = "bajo";
} else if ((parseFloat(scoreQ[key]) >= parseFloat(scoreDivide)) && (parseFloat(scoreQ[key]) <= parseFloat(scoreDivide * 2))) {
range = "medio";
} else if ((parseFloat(scoreQ[key]) >= parseFloat(scoreDivide * 2)) && (parseFloat(scoreQ[key]) <= parseFloat(scoreDivide * 3))) {
range = "alto";
}
//console.log(key, range, scoreQ[key], scoreE[key])
$.ajax({
type: "post",
url: "php/resQuery/tables.php",
data: {
valuebook: key,
range
},
dataType: "json",
success: response => {
var doc = response;
arr.push('<tr> <td>${doc.table.valuebook.replace(/_/gi, " ")}</td> <td>${parseFloat(scoreQ[key]).toFixed(1)}</td> <td>${doc.table.rangeT}</td> <td>${doc.table.descriptionp}</td> <td>${doc.table.descriptions}</td> </tr>');
}
});
})
arr.sort()
arr.forEach(element =>{
console.log(element);
})
}
How can I make the second forEach wait until the first one finishes making all the requests?
I tried to put a promise type done
and then
after the first but it did not work