estoy haciendo forEach
en un array
pero este bucle tiene dentro una petición ajax por cada repetición y necesito esperar hasta que todos los ajax estén listos para poder continuar a ordernar el array que se va llenando con estas peticiones, este es mi código.
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);
})
}
¿cómo puedo hacer esperar el segundo forEach hasta que el primero termine de hacer todas las peticiones?
intenté poner una promesa tipo done
y then
después del primero pero no funcionó