Osobiście widzę 3 warianty:
- zapytania wykonywane jednocześnie (więc i rezultaty przetwarzane asynchronicznie), wykonanie kodu per part po otrzymaniu odpowiedzi. Łatwizna, zwykłe użycie jQuery.
function on_click1() {
for (let i = 0; i < kroki; i++) {
$.ajax({
...
}).then(function(part){
// kod dzialajacy na part
calosc += part;
});
}
};
- zapytania wykonywane po kolei (jedno zapytanie po przeliczeniu wyniku poprzedniego), składnia async (nie zadziała na starszych przeglądarkach):
async function on_click2() {
for (let i = 0; i < kroki; i++) {
let part = await $.ajax({...});
// kod dzialajacy na part
calosc += part;
}
}
- jak wyżej, ale z użyciem promise (pewnie paskudne i ktoś zaraz napisze lepsze):
function on_click3() {
(function loop(i) {
if (i >= kroki) return;
$.ajax({
...
}).then(function(part){
// kod dzialajacy na part
calosc += part;
}).then(() => loop(i+1));
})(0);
};