вот только что в соседнем топике в который раз рекомендовал библиотеку
async.
тут тоже можно всё упростить с её помощью.
условно говоря:
async.parallel([
funcPushArray(0),
funcPushArray(1),
funcPushArray(2),
..
funcPushArray(n),
], function (e) {
if (e) {
someAlert(e);
return;
}
funcDoAjax();
});
с помощью funcPushArray заполняете массив (при этом эти ф-ии выполняются параллельно), по завершении всех этих ф-ий выполнится funcDoAjax().