Potresti fare qualcosa del genere.
function findIdealPoints(data){
var i = 0;
while (i < data.length){
loadAspectWithinRange('aspect', data[i]['lat'], data[i]['long'], 10,
compareWithAspect);
i++;
}
Invece di eseguire una chiamata Ajax per ogni occorrenza, invia l'oggetto dati alla tua chiamata
loadAspectWithinRange('aspect',data,10,compareWithAspect)
Quindi nella richiesta Ajax invia l'array di oggetti al tuo servizio e recupera i risultati per tutti invece che uno per uno.
$.ajax({
url:"...",
data:{
attr1:'aspect',
points: data(here is the array retrieved from "getIdealData.php")
attr2: 10
},
success:function(data){
compareWithAspect(data)
}
})
Nell'elaborazione lato server costruisci un array di oggetti per tutti gli elementi su getIdealData.php
punti.
Sarà meglio invece di fare un Ajax per ogni elemento